Sintaxa AT&T

Versiunea actuală a paginii nu a fost încă revizuită de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 17 decembrie 2013; verificările necesită 19 modificări .

Sintaxa AT&T  este unul dintre formatele pentru scrierea mnemonicii instrucțiunilor procesorului .

Caracteristici

Diferențele dintre asamblatorul AT&T ( gaz ) și asamblatorul Intel ( MASM , TASM , FASM , NASM ) :

%eax, %ebx, %ecx, %edx

movb %al , %ah movw %ax , %bx movl %ebx , %eax
  • Ordinea operanzilor este mai întâi sursa, apoi destinația și nu invers, ca în sintaxa Intel . De exemplu:
mov eax , ebx ;(Intel) movl %ebx , %eax #(AT&T)
  • constantele numerice au următoarea notație:
20 h ;(Intel) $0x20 #(AT&T, semnul dolarului la început) mov ebx , 10 h ;(Intel) movl $0x10 , %ebx #(AT&T)
  • pentru a scrie/citi o valoare de la o anumită adresă într-un registru, nu există semnul dolarului:
movl 0xffff , %eax
  • segment.offset (numai în modul real):
00:0 FFh ;(Intel) 00 .$0xFF #(AT&T)
  • compensare registru:
es: [ bx + 0x1a ] ;(Intel) % es.0x1a ( %bx ) #(AT&T)

Indicațiile metodelor de adresare la index diferă prin aceea că sunt folosite paranteze în loc de paranteze drepte:

sub eax ,[ ebx + ecx * 4 h-20h ] ;(Intel) subl -0 x20 ( %ebx , %ecx , 0x4 ), %eax #(AT&T) scade din valoarea EAX (ECX * 4) + EBX - 32

Mnemonicii unor comenzi diferă (de exemplu, cdqeste numit cltdîn AT&T).

Comenzile asamblatorului diferă (cum ar fi declararea constantelor, rezervarea spațiului).

Vezi și