汇编五、函数

函数参数

  • 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

当函数是叶子函数(最后一个函数,里面没有调用其他函数),不需要开辟栈空间

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容