函数参数
- ARM64下,函数的参数是放到x0到x7(wo-w7)这八个寄存器中
- 如果寄存器的个数超过八个,就会把超过的参数入栈;
函数返回值
- 函数的返回值是放到x0寄存器中的
局部变量
- 函数的局部变量是放到栈中的;
函数调用
_A:
mov x0,#0xaaaa
stp x29,x30,[sp,#-0x10]! ;拉伸栈空间,并且将x29,x30入栈
// sub sp,sp,#0x10
// stp x29,x30,[sp]
bl _B ;调用函数_B
mov x0,#0xcccc
ldp x29,x30,[sp],#0x10 ;栈平衡
// ldp x29,x30,[sp]
// add sp,sp,#0x10
ret
_B:
mov x0,#0xbbbb
ret
当函数是叶子函数(最后一个函数,里面没有调用其他函数),不需要开辟栈空间
网友评论