Skip to content

Glossary

Registre RAX

RAX est l'accumulateur 64 bits de x86-64, qui contient les valeurs de retour de fonction et l'opérande implicite de nombreuses instructions arithmétiques.

RAX est l'accumulateur principal de l'architecture x86-64. C'est l'extension 64 bits de l'ancien EAX, et historiquement la cible par défaut du processeur pour les opérations arithmétiques, logiques et sur chaînes. De nombreuses instructions encodent RAX implicitement, ce qui en fait l'un des registres les plus sollicités de tout désassemblage.

Sa convention la plus importante est que RAX contient la valeur de retour d'une fonction. Dans la System V AMD64 ABI (Linux, macOS, BSD) comme dans la Microsoft x64 ABI (Windows), un résultat entier ou pointeur revient dans RAX. Sur System V, RAX est également sauvegardé par l'appelant (volatil) et, pour les appels variadiques, indique le nombre de registres vectoriels utilisés. Il n'est jamais préservé par l'appelé à travers un appel.

Sous-registres

RAX se décompose en vues plus petites qui pointent toutes vers le même stockage physique :

asm
mov rax, 0x1122334455667788   ; 64 bits complet
; eax = 0x55667788  (32 bits de poids faible ; écrire eax met à zéro les 32 bits hauts)
; ax  = 0x7788      (16 bits de poids faible)
; al  = 0x88        (8 bits de poids faible)
; ah  = 0x77        (bits 8-15)

Pourquoi c'est important en rétro-ingénierie

Quand vous lisez un désassemblage, RAX après un call contient presque toujours le résultat qui vous intéresse — un code d'état, un pointeur ou un booléen. Les fonctions se terminent fréquemment par xor eax, eax (retourne 0) ou mov eax, 1. Surveiller RAX dans un débogueur est souvent le moyen le plus rapide de confirmer ce qu'une routine a produit.

Voir le concept général de registre, la référence assembleur et l'analyse approfondie assembleur x86 vs x64. À comparer avec le registre RDX, qui s'associe à RAX pour les multiplications et divisions larges.