Turbo C 2.01 und Inline ASM
-
Hallo,
Wenn ich in TurboC 2.01(tcc.exe) Inline Assembler benutze bekomme ich dauernd die Fehlermeldung Inline-Assembly not allowed in function test (main, wo ich´s halt benutze).
z.B.:void Test1() { asm xor ax,ax } int main() { Test1; return(0); }
Fehler: Inline Assembly not allowed in function Test1
Weshalb kommt diese Fehlermeldung, hab ich was übersehen?Wenn ich das mit tc.exe -noname.c compiliere gehts.
Wie kann ich Inline Assembler nutzen ohne jedes mal asm davor schreiben zu müssen, gibts sowas wie __asm{mov sub add und was es nicht alles gibt}thx im Voraus
Noob[ Dieser Beitrag wurde am 29.07.2002 um 06:26 Uhr von noob editiert. ]
-
Das Keywort hießt einfach asm! Ist halt bei jedem Compiler anders.
Aber - damit kannst du bei Turbo C nur Assembler-Code in den C-Code einfügen, nicht assemblieren. TC hat nämlich keinen eigenen Inline-Assembler, sondern ruft zur Übersetzung des Inline-ASM-Code den Turbo Assembler auf. Du mußt also TASM installiert haben und einen PATH zu ihm gelegt haben, damit TC ihn finden und aufrufen kann.
Es gibt aber freie C Compiler für DOS, du einen Inline Assembler haben.
-
Das mit Tasm weiss ich, die tasm.exe liegt bei mir im selben Verzeichnis wie tcc.exe und tc.exe, damit gibts kein Problem.
Das Prob is nur: Fehler: Inline Assembly not allowed in function Test1
und dass ich jedes mal asm davor schreiben muss, asm{} währe super oder sowas ähnliches haltmfg
Noob
-
Zunächst einmal haben wir uns ein bißchen mißverstanden. Mein Hinweis asm bezog sich auf deinen letzten Satz, in dem du nach __asm { ... } oder so was fragtest. Bei TC heißt das eben asm { ... } (das meinte ich), womit diese beiden Formen möglich sind:
void Test1() { asm xor ax,ax }
oder
void Test1() { asm { xor ax,ax } }
------------
Warum dein Compiler inline-assembling verweigert, ist mir allerdings schleierhaft. Ich benutze TC ++ 1.0, also den Nachfolger von TC 2.01, und da wird dein Code anstandslos übersetzt.
Vielleicht probierst du es mal mit dem TC ++ 1.0? Vlleicht klappts ja mit dem? Besser ist der sowieso (z. B. kanst du bei der IDE die Maus benutzen). TC ++ 1.0 gibts kostenlos bei Borland (2 MB Download).
-
grosses thx und sorry für´s Misstverständnis.
genau nach diesem
asm
{
blabla
}habe ich gesucht. Ich werde mal den TC++1.0 runterladen.
thx und mfg
Noob
-
Der TC++ 1.0 funktioniert super, aber anfangs hatte ich das gleiche Problem. Allerdings habe ich meinen Fehler gefunden.
void Test1() { asm { xor ax,ax mov bx,0009H } }
Dieser Code ging nicht, hingegen folgender sich fehlerfrei compilieren lässt:
void Test1() { asm{ xor ax,ax mov bx,0009H } }
ich wusste einfach nicht dass man die Klammer direkt danach schreiben muss. Ich war´s von VC++ immer mit __asm gewohnt, nochmals thx jetzt funktioniert alles.
mfg
Noob