AT&T (assemblatore)
La sintassi AT&T è una delle varianti in linguaggio assembly dei processori x86 . Si tratta di una trasposizione verso questa architettura del linguaggio riconosciuto dall'assemblatore di UNIX , as , che ha poi preso di mira i minicomputer della famiglia PDP . Questa rappresentazione è usata in particolare da GAS , l'assemblatore del progetto GNU .
Concetti
A differenza della sintassi Intel, la sintassi AT&T colloca gli operandi nell'ordine di origine prima di destinazione .
Le caratteristiche principali di questa sintassi sono:
- L'assemblatore distingue sempre tra maiuscolo e minuscolo
- Le costanti sono scritte con la solita notazione in C
- Gli operandi immediati (costanti) sono preceduti da un dollaro '$'
- I registri sono preceduti da un '%'
- I salti assoluti (jmp / call) sono preceduti da un asterisco '*'
- L'indirizzamento (differimento) è contrassegnato da parentesi: un operando basato sulla tabella EBX + fornisce table(%ebx)
- Ordine degli operandi: origine prima della destinazione (ordine scelto per motivi di compatibilità con altri assemblatori UNIX)
- La dimensione degli operandi può essere specificata utilizzando l'ultimo carattere dell'operazione (nella sintassi Intel, fino al Pentium incluso, vengono utilizzati operatori specifici sugli operandi, ad esempio l'operatore PTRcon MASM ):
-
b→ byte (8 bit - 1 byte)
-
w→ parola (16 bit - 2 byte)
-
s→ breve (32 bit - 4 byte, per operazioni in virgola mobile )
-
l→ long (32 bit - 4 byte per interi, 64 bit - 8 byte per float)
-
q→ quad (64 bit - 8 byte)
-
t→ dieci byte (80 bit - 10 byte)
-
o→ octo (128 bit - 16 byte) per l'architettura x86-64 !
- I salti "lunghi" assoluti (ljump / lcall) hanno la seguente sintassi: $sélecteur, $offsete non section:offsetcome nella sintassi dei manuali Intel
- Nessun supporto per più segmenti , i programmi utilizzano un singolo indirizzamento virtuale lineare
Esempi
Ad esempio, un'istruzione nello standard Intel:
mov eax, 0FFh
Fornirà lo standard AT&T
movl $0xFF, %eax
L'equivalente AT&T di
mov byte ptr [ebx], 0FFh
È
movb $0xFF, (%ebx)
Vedi anche
Articoli Correlati
link esterno