linux下函数参数调用
Published on Nov 15, 2014
x64
整型和指针型参数次保存在寄存器:
rdi
rsi
rdx
rcx
r8
- 'r9'
浮点型参数依次保存到:
xmm0
xmm1
…
其它从右往左依次入栈。
x86
从右往左依次入栈,即在栈上从低地址向高地址分布。
一般栈上是这样的,从上到下地址增长:
0 1 2 3 ... -------- 上层FP <----FP -------- 返回地址 -------- 参数1 -------- 参数2 ...
如果参数大于四个字节,则占据多个字节,按cpu字节序(endian)入栈
fastcall
使用寄存器,前三个使用寄存器传递参数:
eax
edx
ecx
其它按入栈规则入栈。
C++
除了参数,对象指针也会被传递。