Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: Kyoko12 am 17. November 2004, 16:26
-
Hi, ich hättre mal ne Frage.
Mein Probrem:
Ich beispielsweise in C++ eine Variable definieren die a heist und sagen wir mal den Wert 5 hat.
Jetzt möchte ich den asm Befehl von C++ so einsetze ndas ich die Variable einsetzten kann.
z. B.:
mov si, a
so das a meine C++ Variable ist. Wie geht das denn?
Das Bona Fide Tutorial dazu versteh ich nähmlich nicht.
Cu.
-
hi,
also zunächst muss man erfahren welchen compiler du benutzt (gcc, oder sonstwas)
-
wie es genau geht weiß ich nich, ich gehe aber davon aus dass du vor sämtliche variablen nen _ schreiben darfst (also "_a" statt "a"), zumindenst ist dies der fall wenn man den code mit reinlinkt. (is ganz einfach um Doppelte Variablen u. ä. zu vermeiden, passiert ja oft sowas ^^ für Labels und Co gilt das übrigens auch...)
-
hehe
das geht nich einfach so mit "_".
also der gcc braucht da die AT & T Syntax.
das sieh dan in etwa so aus:
asm volatile ("movw %%ax, %%si" : "" : "a"(a) );
erstens musst du
mov ziehl, quelle
in
mov quelle, ziehl umwandeln.
dann musst du auch noch sagen wieviel byte du operieren willst
also movw für word, movb für byte etc...
%%ax = bedeutet das es ein register ist
"a"(a) = bedeutet das es die variable a in eax mecht...
hoffe das stimmt mal soweit... :D
PS: Es giebt auch noch andere varianten das zu coden (auch mit inline asm)
-
Danke, ich kaspiers zwar nochnicht ganz, aber schon besser als vorher.
Ich verwend Dev.C++ unter Windows XP.