AT&T (montador)
A sintaxe da AT&T é uma das variantes da linguagem assembly dos processadores x86 . Trata-se de uma transposição para essa arquitetura da linguagem reconhecida pelo montador do UNIX , as , que então visava os minicomputadores da família PDP . Esta representação é usada em particular pelo GAS , o montador do projeto GNU .
Conceitos
Ao contrário da sintaxe da Intel, a sintaxe da AT&T coloca os operandos na ordem de Origem antes de Destino .
As principais características dessa sintaxe são:
- O montador sempre diferencia entre maiúsculas e minúsculas
- As constantes são escritas com a notação usual em C
- Operandos imediatos (constantes) são prefixados com um dólar '$'
- Os registros são prefixados com um '%'
- Saltos absolutos (jmp / call) são prefixados com um asterisco '*'
- A indireção (deferenciação) é marcada por parênteses: um operando baseado na tabela EBX + dá table(%ebx)
- Ordem dos operandos: Origem antes do Destino (ordem escolhida por motivos de compatibilidade com outros montadores UNIX)
- O tamanho dos operandos pode ser especificado usando o último caractere da operação (na sintaxe Intel, até Pentium incluído, são usados operadores específicos nos operandos, por exemplo, o operador PTRcom MASM ):
-
b→ byte (8 bits - 1 byte)
-
w→ palavra (16 bits - 2 bytes)
-
s→ curto (32 bits - 4 bytes, para operações de ponto flutuante )
-
l→ longo (32 bits - 4 bytes para inteiros, 64 bits - 8 bytes para flutuantes)
-
q→ quad (64 bits - 8 bytes)
-
t→ dez bytes (80 bits - 10 bytes)
-
o→ octo (128 bits - 16 bytes) para a arquitetura x86-64 !
- Os saltos "longos" absolutos (ljump / lcall) têm a seguinte sintaxe: $sélecteur, $offsete não section:offsetcomo na sintaxe dos manuais da Intel
- Sem suporte para vários segmentos , os programas usam endereçamento virtual linear único
Exemplos
Por exemplo, uma instrução no padrão Intel:
mov eax, 0FFh
Fornecerá padrão AT&T
movl $0xFF, %eax
O equivalente AT&T de
mov byte ptr [ebx], 0FFh
É
movb $0xFF, (%ebx)
Veja também
Artigos relacionados
links externos