Inline-Assembler mit GCC — Änderungen 1981 → 2037

Zeile 7: Zeile 7:
 
* Konstanten bekommen grundsätzlich ein $ vorangestellt, Hexadezimalzahlen werden durch 0x eingeleitet: <pre>mov $42, %eax</pre><pre>mov $0xBADC0FFE, %eax</pre>
 
* Konstanten bekommen grundsätzlich ein $ vorangestellt, Hexadezimalzahlen werden durch 0x eingeleitet: <pre>mov $42, %eax</pre><pre>mov $0xBADC0FFE, %eax</pre>
 
* Die Operandengrößen sind im Mnemonic enthalten. Wird die Größe nicht angegeben, versucht der Assembler sie anhand der Operanden festzustellen. <pre>movl $123, %eax</pre><pre>movw $123, %ax</pre><pre>movb $123, %al</pre>
 
* Die Operandengrößen sind im Mnemonic enthalten. Wird die Größe nicht angegeben, versucht der Assembler sie anhand der Operanden festzustellen. <pre>movl $123, %eax</pre><pre>movw $123, %ax</pre><pre>movb $123, %al</pre>
−
* Speicherzugriffe erfolgen im Format "displacement(register)", wobei das Displacement optional ist: <pre>pushl (%eax)</pre><pre>mov %eax, 0x8(%ebp)</pre><pre>mov 0xfffffff8(%esp,%eax,1),%eax</pre>
+
* Speicherzugriffe erfolgen im Format "segment:displacement(base, index, scale)", wobei das Displacement als auch Index und Scale optional sind: <pre>pushl (%eax)</pre><pre>mov %eax, 0x8(%ebp)</pre><pre>mov 0xfffffff8(%esp,%eax,1),%eax</pre>
  
 
==Einfache Befehle==
 
==Einfache Befehle==