Využití registrů
Architektura x64 stanoví 16 obecně účelných registrů (dále jen jako celočíselné registry), stejně jako 16 XMM registrů, k dispozici pro použití čísla s plovoucí desetinnou čárkou.Závislé registry jsou odolné registry, předpokládající, že budou zničeny volájícím po ukončení volání.Nezávislé registry požadují udržení hodnot prostřednictvím volání funkce a pokud jsou použity, musí být uloženy volaným.
Následující tabulka popisuje, jak je používán každý registr v rámci volání funkce:
Registr |
Stav |
Pomocí |
RAX |
Závislé |
Návratová hodnota registru |
RCX |
Závislé |
První argument celého čísla |
RDX |
Závislé |
Druhý argument celého čísla |
R8 |
Závislé |
Třetí argument celého čísla |
R9 |
Závislé |
Čtvrtý argument celého čísla |
R10:R11 |
Závislé |
Musí být zachovány v případě potřeby volajícího; používány v instrukcích syscall/sysret |
R12:R15 |
Nezávislé |
Musí být zachovány volaným |
RDI |
Nezávislé |
Musí být zachovány volaným |
RSI |
Nezávislé |
Musí být zachovány volaným |
RBX |
Nezávislé |
Musí být zachovány volaným |
RBP |
Nezávislé |
Mohou být použity jako rámcový ukazatel; musí být zachovány volaným |
RSP |
Nezávislé |
Ukazatel zásobníku |
XMM0 |
Závislé |
První argument FP |
XMM1 |
Závislé |
Druhý argument FP |
XMM2 |
Závislé |
Třetí argument FP |
XMM3 |
Závislé |
Čtvrtý argument FP |
XMM4:XMM5 |
Závislé |
Musí být zachovány v případě potřeby volajícího |
XMM6:XMM15 |
Nezávislé |
Musí být, v případě potřeby, zachovány volaným |