Syntaxe AT&T
Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od
verze recenzované 17. prosince 2013; kontroly vyžadují
19 úprav .
Syntaxe AT&T je jedním z formátů pro psaní mnemotechnických pomůcek instrukcí procesoru .
Funkce
Rozdíly mezi assemblerem AT&T ( plyn ) a assemblerem Intel ( MASM , TASM , FASM , NASM ) :
- Komentář začíná znakem "#", nikoli ";"; naopak symbol ";" odděluje příkazy a umožňuje psát více příkazů na jeden řádek.
- Absence prefixu operandu ukazuje na adresu paměti, takže movl $foo,%eax umístí adresu foo do registru %eax a movl foo,%eax umístí obsah foo do %eax.
- Názvy registrů začínají znakem %, tj. %eax, %dl, namísto eax, dl atd. To vám umožní zahrnout do kódu externí proměnné C bez obav z chyb a bez použití předpon podtržítka (_). Například:
%eax, %ebx, %ecx, %edx
- Velikost operandu je definována jako přípona názvu instrukce. Přípony:
- b (from byte ) - 1 byte operandy
- w (ze slova ) - 1 slovo (2 bajty) operandy
- l (z dlouhých ) - 4bajtové operandy
- q (from quad ) - 8 bajtových operandů
- t (od deseti ) - 10bajtové operandy
- o (od octo ) - 16bajtové operandy
movb %al , %ah
movw %ax , %bx
movl %ebx , %eax
- Pořadí operandů je nejprve zdroj, pak cíl a ne naopak, jako v syntaxi Intel . Například:
mov eax , ebx ;(Intel)
movl %ebx , %eax #(AT&T)
- číselné konstanty mají následující zápis:
20 h ;(Intel)
$0x20 #(AT&T, znak dolaru na začátku)
mov ebx , 10 h ;(Intel)
movl $0x10 , %ebx #(AT&T)
- pro zápis / čtení hodnoty z konkrétní adresy do registru neexistuje znak dolaru:
movl 0xffff , %eax
- segment.offset (pouze v reálném režimu):
00:0 FFh ;(Intel)
00 .$0xFF #(AT&T)
es: [ bx + 0x1a ] ;(Intel)
% es.0x1a ( %bx ) #(AT&T)
Indikace metod indexového adresování se liší v tom, že místo hranatých závorek se používají závorky:
sub eax ,[ ebx + ecx * 4 h-20 h ] ; (Intel)
subl -0 x20 ( %ebx , %ecx , 0x4 ), %eax #(AT&T) odečíst od hodnoty EAX (ECX * 4) + EBX - 32
Mnemotechnika některých příkazů se liší (například cdqse nazývá cltdv AT&T).
Příkazy assembleru se liší (např. deklarace konstant, rezervace místa).
Viz také