ASM86
ASM86 wurde von der Firma Intel als Assembler für deren x86-Prozessor-Familie vertrieben. Heute wird er nicht mehr vertrieben oder weiterentwickelt. Seine Syntax ist jedoch weit verbreitet unter x86-Assemblern wie dem Netwide Assembler, dem Microsoft Macro Assembler oder Borlands Turbo Assembler. Die Syntaxen heutiger x86-Assembler basieren meistens auf der des ASM86 oder sind identisch mit dieser, daher ist sie auch allgemein als „Intel Syntax“ oder „Intel Assembler Syntax“ bekannt.
Syntaxunterschiede
Für x86-Assembly gibt es zwei vorherrschende Syntaxen: Intel-Syntax und AT&T-Syntax.<ref name="GASvsNASM">Vorlage:Cite book/NameVorlage:Cite book/Name: [Internetquelle: archiv-url ungültig Linux assemblers: A comparison of GAS and NASM.] , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 13. Januar 2015 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref> Unter Windows dominiert die Intel-Syntax, im GNU/Linux-Ökosystem dagegen die AT&T-Syntax.<ref>Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig The Creation of Unix.] Bell Labs, , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 13. Januar 2015 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref>
| AT&T | Intel | |
|---|---|---|
| Parameterreihenfolge | Erst Quelle, dann Ziel<syntaxhighlight lang="asm">mov $5, %eax</syntaxhighlight> | Erst Ziel, dann Quelle<syntaxhighlight lang="asm">mov eax, 5</syntaxhighlight> |
| Parametergröße | Mnemonics erhalten ein Suffix, das für die Operandenlänge steht: q = QWord, l = DWord, w = Word b = Byte.<ref name="GASvsNASM"/> <syntaxhighlight lang="asm">addl $4, %esp</syntaxhighlight> | <syntaxhighlight lang="asm">add esp, 4</syntaxhighlight> |
| Sigils | Unmittelbare Werte haben Präfix “$”, Register “%”.<ref name="GASvsNASM"/> | |
| Effektive Adressen | DISP(BASE,INDEX,SCALE). Beispiel: <syntaxhighlight lang="asm">movl mem_location(%ebx,%ecx,4), %eax</syntaxhighlight> | Beispiel: <syntaxhighlight lang="asm">mov eax, [ebx + ecx*4 + mem_location]</syntaxhighlight> |
Skriptfehler: Ein solches Modul „Vorlage:Siehe auch“ ist nicht vorhanden.
Einzelnachweise
<references />