Compartir a través de


Uso de registros

Actualización: noviembre 2007

La arquitectura x64 proporciona recursos para 16 registros de uso general (de ahora en adelante, se les llamará registros de tipo entero) así como 16 registros de XMM disponibles para el uso de punto flotante. Los registros variables son registros improvisados que el llamador supone que se van a destruir durante una llamada. Los registros no variables deben retener sus valores durante una llamada a una función y el destinatario debe guardarlos si los utiliza.

La tabla siguiente describe cómo se utiliza cada registro durante las llamadas a funciones:

Register

Estado

Uso

RAX

Variable

Registro de valor devuelto

RCX

Variable

Primer argumento de tipo entero

RDX

Variable

Segundo argumento de tipo entero

R8

Variable

Tercer argumento de tipo entero

R9

Variable

Cuarto argumento de tipo entero

R10:R11

Variable

Se debe conservar según requiera el llamador; se utiliza en instrucciones syscall/sysret

R12:R15

No variable

Debe ser conservado por el destinatario

RDI

No variable

Debe ser conservado por el destinatario

RSI

No variable

Debe ser conservado por el destinatario

RBX

No variable

Debe ser conservado por el destinatario

RBP

No variable

Se puede utilizar como un puntero de marco; debe ser conservado por el destinatario

RSP

No variable

Puntero de pila

XMM0

Variable

Primer argumento FP

XMM1

Variable

Segundo argumento FP

XMM2

Variable

Tercer argumento FP

XMM3

Variable

Cuarto argumento FP

XMM4:XMM5

Variable

Se debe conservar según lo requiera el llamador

XMM6:XMM15

No variable

Se debe conservar según lo requiera el destinatario

Vea también

Referencia

Convenciones de software x64