Condividi tramite


Utilizzo dei registri

L'architettura x64 fornisce 16 registri di uso generale (in seguito indicati come registri Integer) e 16 registri XMM/YMM disponibili per l'uso con virgola mobile.I registri volatili sono registri temporanei che il chiamante suppone vengano eliminati con una chiamata.I registri non volatili devono conservare i relativi valori durante le chiamate di funzione e, se usati, devono essere salvati dal chiamante.

Nella tabella seguente viene descritto il modo in cui ogni registro viene usato durante le chiamate di funzione:

Registrazione

Stato

Utilizzo

RAX

Volatile

Registro del valore restituito

RCX

Volatile

Primo argomento Integer

RDX

Volatile

Secondo argomento Integer

R8

Volatile

Terzo argomento Integer

R9

Volatile

Quarto argomento Integer

R10:R11

Volatile

Deve essere mantenuto in base alle esigenze del chiamante. Viene usato nelle istruzioni syscall/sysret.

R12:R15

Non volatile

Deve essere mantenuto dal chiamato.

RDI

Non volatile

Deve essere mantenuto dal chiamato.

RSI

Non volatile

Deve essere mantenuto dal chiamato.

RBX

Non volatile

Deve essere mantenuto dal chiamato.

RBP

Non volatile

Può essere usato come puntatore ai frame. Deve essere mantenuto dal chiamato.

RSP

Non volatile

Puntatore dello stack

XMM0, YMM0

Volatile

Primo argomento FP; primo argomento di tipo vettore quando si usa __vectorcall.

XMM1, YMM1

Volatile

Secondo argomento FP; secondo argomento di tipo vettore quando si usa __vectorcall.

XMM2, YMM2

Volatile

Terzo argomento FP; terzo argomento di tipo vettore quando si usa __vectorcall.

XMM3, YMM3

Volatile

Quarto argomento FP; quarto argomento di tipo vettore quando si usa __vectorcall.

XMM4, YMM4

Volatile

Deve essere mantenuto in base alle esigenze del chiamante; quinto argomento di tipo vettore quando si usa __vectorcall.

XMM5, YMM5

Volatile

Deve essere mantenuto in base alle esigenze del chiamante; sesto argomento di tipo vettore quando si usa __vectorcall.

XMM6:XMM15, YMM6:YMM15

Non volatile (XMM), volatile (metà superiore di YMM)

Deve essere mantenuto in base alle esigenze del chiamato.I registri YMM devono essere mantenuti in base alle esigenze del chiamante.

Vedere anche

Riferimenti

Convenzioni del software x64

__vectorcall