Utilizzo dei registri

L'architettura x64 fornisce 16 registri di utilizzo generale (d'ora in poi denominati registri Integer) e 16 registri XMM disponibili per le operazioni a virgola mobile. I registri volatili sono registri temporanei che si suppone vengano eliminati dal chiamante attraverso una chiamata. I registri non volatili conservano i relativi valori durante le chiamate di funzione e, se utilizzati, devono essere salvati dal chiamante.

Nella tabella riportata di seguito è indicato il modo in cui ciascun registro viene utilizzato durante le chiamate di funzione:

Registra

Stato

Utilizzare

RAX

Volatile

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 salvato, se necessario, dal chiamante. Viene utilizzato nelle istruzioni syscall/sysret

R12:R15

Non volatile

Deve essere salvato dal chiamato

RDI

Non volatile

Deve essere salvato dal chiamato

RSI

Non volatile

Deve essere salvato dal chiamato

RBX

Non volatile

Deve essere salvato dal chiamato

RBP

Non volatile

Può essere utilizzato come puntatore ai frame. Deve essere salvato dal chiamato

RSP

Non volatile

Puntatore dello stack

XMM0

Volatile

Primo argomento FP

XMM1

Volatile

Secondo argomento FP

XMM2

Volatile

Terzo argomento FP

XMM3

Volatile

Quarto argomento FP

XMM4:XMM5

Volatile

Deve essere salvato, se necessario, dal chiamante

XMM6:XMM15

Non volatile

Deve essere salvato, se necessario, dal chiamato

Vedere anche

Riferimenti

Convenzioni del software x64