C IN ARM64 汇编基础-函数-基于The C Programming Language - Second Edition

C源码:

#include <stdio.h>

int power(int m, int n); /* test power function */

int main() {
    return power(2,1);
}

int power(int base, int n) {
    return base;
}

汇编源码:

//main函数
00000000000005a8 <main>:
 5a8:   d10083ff    sub sp, sp, #0x20
 5ac:   a9017bfd    stp x29, x30, [sp,#16]
 5b0:   910043fd    add x29, sp, #0x10
 5b4:   321f03e0    orr w0, wzr, #0x2
 5b8:   320003e1    orr w1, wzr, #0x1
 5bc:   b81fc3bf    stur    wzr, [x29,#-4]
 5c0:   97ffffca    bl  4e8 <power@plt>
 5c4:   a9417bfd    ldp x29, x30, [sp,#16]
 5c8:   910083ff    add sp, sp, #0x20
 5cc:   d65f03c0    ret

//根据plt会找到真正的power函数
00000000000004e8 <power@plt>:
 4e8:   b0000010    .word   0xb0000010
 4ec:   f947fe11    .word   0xf947fe11
 4f0:   913fe210    .word   0x913fe210
 4f4:   d61f0220    .word   0xd61f0220

//power函数
00000000000005d0 <power>:
 5d0:   d10043ff    sub sp, sp, #0x10
 5d4:   b9000fe0    str w0, [sp,#12]
 5d8:   b9000be1    str w1, [sp,#8]
 5dc:   b9400fe0    ldr w0, [sp,#12]
 5e0:   910043ff    add sp, sp, #0x10
 5e4:   d65f03c0    ret

这里面要注意的就是调用power函数的时候,把两个参数分别放入了寄存器w0(x0)、w1(x1),这也是arm汇编里面传参数的方式,arm64用x0-x7传参数,如果参数大于8个,那么就使用栈.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值