Accueil🇫🇷Chercher

AT&T (assembleur)

La syntaxe AT&T correspond à l'une des variantes du langage d'assemblage des processeurs x86. Il s'agit d'une transposition vers cette architecture du langage reconnu par l'assembleur de UNIX, as, qui ciblait alors les mini-ordinateurs de la famille PDP. Cette représentation est notamment utilisée par GAS, l'assembleur du projet GNU.

Concepts

Par opposition à la syntaxe Intel, la syntaxe AT&T place les opérandes dans l'ordre Source avant Destination.

Les principales caractéristiques de cette syntaxe sont :

  • L'assembleur fait toujours la diffĂ©rence entre majuscules et minuscules
  • Les constantes sont Ă©crites avec la notation habituelle en C
  • Les opĂ©randes immĂ©diats (constantes) sont prĂ©fixĂ©s d'un dollar '$'
  • Les registres sont prĂ©fixĂ©s d'un '%'
  • Les sauts (jmp/call) absolus sont prĂ©fixĂ©s d'un astĂ©risque '*'
  • L'indirection (dĂ©fĂ©renciation) est marquĂ©e par des parenthèses : un opĂ©rande basĂ© sur EBX+table donne table(%ebx)
  • Ordre des opĂ©randes : Source avant Destination (ordre choisi pour des raisons de compatibilitĂ© avec d'autres assembleurs UNIX)
  • La taille des opĂ©randes peut ĂŞtre prĂ©cisĂ©e grâce au dernier caractère de l'opĂ©ration (en syntaxe Intel, jusqu'au Pentium inclus, des opĂ©rateurs spĂ©cifiques sur les opĂ©randes sont utilisĂ©s, par exemple l'opĂ©rateur PTR avec MASM) :
    • b → byte (8 bits - 1 octet)
    • w → word (16 bits - 2 octets)
    • s → short (32 bits - 4 octets, pour les opĂ©rations en virgule flottante)
    • l → long (32 bits - 4 octets pour les entiers, 64 bits - 8 octets pour les flottants)
    • q → quad (64 bits - 8 octets)
    • t → ten bytes (80 bits - 10 octets)
    • o → octo (128 bits - 16 octets), pour l'architecture x86-64!
  • Les sauts « longs » (ljump/lcall) absolus ont la syntaxe suivante : $sĂ©lecteur, $offset, et non pas section:offset comme dans la syntaxe des manuels Intel
  • Pas de support pour de multiples segments, les programmes utilisent un unique adressage virtuel linĂ©aire

Exemples

Par exemple, une instruction en norme Intel :

 mov eax, 0FFh

Donnera en norme AT&T

 movl $0xFF, %eax

L'Ă©quivalent en AT&T de

 mov byte ptr [ebx], 0FFh

Est

 movb $0xFF, (%ebx)

Voir aussi

Articles connexes

Liens externes

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.