Inline-ASM mit Turbo C++
-
Guten Tag,
Ich verwende zur DOS-Programmierung den Turbo-C++ Compiler, Version 1.01 (die freie Version aus dem Borland Museum). Ich habe damit ein Problem, in Funktionen die den Inline-Assembler benützen: Ich lege die Rückgabewerte nämlich per ASM in AX ab. Jetzt beschwert sich der Compiler aber, denn "function should return a value". Und das obwohl ich unter "Options/Compiler/Messages/Frequent Errors" genau diesen Fehler abgestellt habe. Weiß jemand, warum das trotzdem nicht funzt?
P.S.: Ich weiß, man kann den Fehler mit einem nachgestellten return _AX umgehen, aber ich verwende ASM an Stellen, die so schnell wie irgendwie möglich laufen sollen, also möchte ich mir diese "doppelte Rückgabe" lieber sparen.
-
ich glaube nicht, dass der Compiler bei return _AX ein movl %ax,%ax macht. Falls du dir nicht sicher bist, solltest du mal die Compiler Optionen durchsuchen, ob es eine Möglichkeit gibt an den Assembler Output zu kommen (zur Not über einen disassembler) oder ob es eine Option gibt um die Warnung zu deaktivieren
BTW. ist dein Compiler total überholt, ich würde mir an deiner Stelle einen anderen suchen!
-
Tatsächlich, im Assembler-Listing kommt das nicht mehr vor. Das beruhigt mich, jetzt sieht der Quellcode zwar nicht schöner aus, aber ich verliere keine Geschwindigkeit dabei.
P.S.: Ich weiß,dass der Compiler uralt ist, ich benutze ihn aber wie gesagt nur für DOS-Programmierung, und dort gefällt er mir ganz gut. Liegt v.a. daran, dass ich keinen anderen Compiler gefunden habe, dessen Inline-ASM (soweit überhaupt vorhanden) die Intel-Syntax verwendet.
-
Original erstellt von <Mic++hi>:
Liegt v.a. daran, dass ich keinen anderen Compiler gefunden habe, dessen Inline-ASM (soweit überhaupt vorhanden) die Intel-Syntax verwendet.Wie verwendet man das Inline-ASM bei Turbo-C++ 1? Wenn ich das versuche gibt es nur eine Fehlermeldung, die besagt, dass die Funktion nicht deklariert ist.
-
Der TASM ist nicht von Anfang an installiert. Du musst ihn (d.h. die Datei TASM.EXE) in das bin\ Verzeichnis des Turbo-C++-Ordners kopieren.