Inline-Assembler: C++ Variable in Register und int
-
Moin Moin,
hoffe erstmal das ich hier richtig bin (wusste nicht ob das zu C++ oder Assembler gehört).
Ich möchte eine Variableunsigned int temp;
in das Register ES packen, wie macht man so was? Habe nur mit Assembler(Intel/MS Syntax) gearbeitet und nicht mit AT&T Syntax oder Inline-Assembler. Und wie nutzt man denn Befehl int (in Inline-Assembler)? Mein Compiler ist der "clang LLVM compiler" aka GCC/G++.
BD
-
Und wie nutzt man denn Befehl int (in Inline-Assembler)?
Es macht einen interrupt. Unter Linux nutzt man bspw.
int 0x80
für einen Syscall.So sähe der Code aus:
unsigned temp = 752; asm("movl %0, %%eax;" ::"r"(temp) :"%eax" );
-
Inline schrieb:
Mein Compiler ist der "clang LLVM compiler" aka GCC/G++.
Ähm, das sind zwei unterschiedliche Compiler.
-
Kann ich auch noch gleich was zu Inline-Assembler fragen?
Ja? Cool!
Also:Wie funktioniert eigentlich das ansprechen der Segemntregister?
Nach lowlevel.eu heißt es:[i]Register werden in der Ausgabe- und Eingabeliste folgendermaßen bezeichnet: a, b, c, d stehen für eax, ebx, ecx, edx (bzw. die entsprechenden Word- und Byte-Varianten, je nach Größe der übergebenen Variablen), D für edi und S für esi[/i]
Was ist dann der Buchstabe für die Segmentregister?
LG
-
Auf x86: cs, ds, ss, es, fs und gs.