寄存器
RIP 指令寄存器,存储PC指针
参数寄存器有6个,分别是%rdi,%rsi,%rdx,%rcx,%r8,%9,超过6个的参数通过栈传递
RSP,RBP 栈顶指针,栈基指针寄存器
在mac的amd64位系统架构下,调用参数传递如下,按照从左至右的顺序写入前6个参数到寄存器,它们分别是%edi,%esi,%edx,%ecx, %r8d, %r9d,超过6个参数的部分按照从右至左的顺序押入栈中
在mac上使用如下代码程序(test.c),可验证一下
int func(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8) {
return 10;
}
int main() {
func(1,2,3,4,5,6,7,8);
return 0;
}
执行编译生成汇编代码
clang test.c -S