Partager via


Utilisation des Registres

Mise à jour : novembre 2007

L'architecture x64 propose 16 registres à usage général (appelés ci-après registres entiers), ainsi que 16 registres XMM disponibles pour une utilisation à virgule flottante. Les registres volatils sont des registres de travail que l'appelant suppose être détruits au terme d'un appel. Les registres non volatils doivent conserver leurs valeurs tout au long d'un appel de fonction et doivent être enregistrés par l'appelé s'ils sont utilisés.

Le tableau suivant décrit de quelle manière chaque registre est utilisé dans les appels de fonction :

Registre

État

Utilisation

RAX

Volatil

Registre de valeurs de retour

RCX

Volatil

Premier argument entier

RDX

Volatil

Deuxième argument entier

R8

Volatil

Troisième argument entier

R9

Volatil

Quatrième argument entier

R10:R11

Volatil

Doit être conservé autant que nécessaire par l'appelant ; utilisé dans les instructions syscall/sysret

R12:R15

Non volatil

Doit être conservé par l'appelé

RDI

Non volatil

Doit être conservé par l'appelé

RSI

Non volatil

Doit être conservé par l'appelé

RBX

Non volatil

Doit être conservé par l'appelé

RBP

Non volatil

Peut être utilisé comme pointeur de frame ; doit être conservé par l'appelé

RSP

Non volatil

Pointeur de pile

XMM0

Volatil

Premier argument FP

XMM1

Volatil

Deuxième argument FP

XMM2

Volatil

Troisième argument FP

XMM3

Volatil

Quatrième argument FP

XMM4:XMM5

Volatil

Doit être conservé le cas échéant par l'appelant

XMM6:XMM15

Non volatil

Doit être conservé le cas échéant par l'appelé.

Voir aussi

Référence

Conventions des logiciels x64