blob: c5835aa8c226eb1f6afe52e8b7ee9da525817489 [file] [log] [blame]
This file records register use conventions and info for the 4
supported platforms (since it is ABI dependent). This is so as to
avoid having to endlessly re-look up this info in ABI documents.
-----------------------
x86-linux
~~~~~~~~~
Reg Callee Arg
Name Saves? Reg? Comment Vex-uses?
--------------------------------------------------------------
eax n n int[31:0] retreg y
ebx y n y
ecx n n y
edx n n int[63:32] retreg y
esi y n y
edi y n y
ebp y n & guest state
esp reserved n/a n/a
eflags n n/a y
st0 n ? n fp retreg y
st1-7 n ? n y
xmm0-7 n ? n y
amd64-linux
~~~~~~~~~~~
Reg Callee Arg
Name Saves? Reg? Comment Vex-uses?
-------------------------------------------------------------------
rax n n int[63:0] retreg
rbx y n y
rcx n int#4
rdx n int#3 int[127:64] retreg
rsi n int#2 y
rdi n int#1 y
rbp y n & guest state
rsp reserved n/a n/a
r8 n int#5 y
r9 n int#6 y
r10 n ?
r11 n jmp temporary
r12-15 y y
eflags n n/a y
st0-7 n n long double retreg y
xmm0 n fp#1 fp retreg
xmm1 n fp#2 fp-high retreg
xmm2-7 n fp#3-8 y (3-7)
xmm8-15 n y (8-12)
ppc32-linux
~~~~~~~~~~~
Reg Callee Arg
Name Saves? Reg? Comment Vex-uses?
-------------------------------------------------------------------
r0 n n sometimes RAZ
r1 y n stack pointer
r2 n n
r3 n int#1 int[31:0] retreg y
r4 n int#2 also int retreg y
r5 n int#3 y
r6 n int#4 y
r7 n int#5 y
r8 n int#6 y
r9 n int#7 y
r10 n int#8 y
r11 n y
r12 n y
r13 ?
r14-28 y y
r29 y reserved for dispatcher
r30 y altivec spill temporary
r31 y & guest state
f0 n
f1 n fp#1 fp retreg
f2-8 n fp#2-8
f9-13 n
f14-31 y y (14-21)
v0-v19 ?
v20-31 y y (20-27,29)
cr0-7
lr y return address
ctr n
xer n
fpscr
ppc64-linux
~~~~~~~~~~~
TBD
ppc32-aix5
~~~~~~~~~~
Reg Callee Arg
Name Saves? Reg? Comment Vex-uses?
-------------------------------------------------------------------
r0 n n sometimes RAZ
r1 y n stack pointer
r2 n n TOC pointer
r3 n int#1 int[31:0] retreg y
r4 n int#2 also int retreg y
r5 n int#3 y
r6 n int#4 y
r7 n int#5 y
r8 n int#6 y
r9 n int#7 y
r10 n int#8 y
r11 n "env pointer?!" y
r12 n "exn handling" y
r13 ? "reserved in 64-bit env"
r14-28 y y
r29 y reserved for dispatcher
r30 y altivec spill temporary
r31 y & guest state
f0 n
f1 n fp#1 fp retreg
f2-13 n fp#2-13
f14-31 y y (14-21)
v0-v19 ?
v20-31 y y (20-27,29)
cr0-7
lr y return address
ctr n
xer n
fpscr