Sintaxis de AT&T

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 17 de diciembre de 2013; las comprobaciones requieren 19 ediciones .

La sintaxis de AT&T  es uno de los formatos para escribir mnemónicos de instrucciones del procesador .

Características

Diferencias entre el ensamblador AT&T ( gas ) y el ensamblador Intel ( MASM , TASM , FASM , NASM ) :

%eax, %ebx, %ecx, %edx

movb %al , %ah movw %ax , %bx movl %ebx , %eax
  • El orden de los operandos es primero el origen, luego el destino, y no al revés, como en la sintaxis de Intel . Por ejemplo:
mover eax , ebx ;(Intel) mover %ebx , %eax #(AT&T)
  • constantes numéricas tienen la siguiente notación:
20 h ;(Intel) $0x20 #(AT&T, signo de dólar al principio) mov ebx , 10 h ;(Intel) movl $0x10 , %ebx #(AT&T)
  • para escribir/leer un valor de una dirección específica a un registro, no hay signo de dólar:
movl 0xffff , %eax
  • segmento.offset (solo en modo real) :
00:0 FFh ;(Intel) 00 .$0xFF #(AT&T)
  • desplazamiento de registro:
es: [ bx + 0x1a ] ;(Intel) % es.0x1a ( %bx ) #(AT&T)

Las indicaciones de los métodos de direccionamiento de índice difieren en que se utilizan paréntesis en lugar de corchetes:

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

Los mnemotécnicos de algunos comandos difieren (por ejemplo, se cdqllama cltden AT&T).

Los comandos del ensamblador difieren (como declarar constantes, reservar espacio).

Véase también