在线汇编运行网站

https://godbolt.org/

int square(int num) {
    return num * num;
}
square(int):
        sub     sp, sp, #4      //队指针寄存器 sp sp=sp-4  开辟栈空间 递减
        str     r0, [sp]          //r0寄存器的值写入sp对应的地址上  ->寄存器的值写到外部 
        ldr     r0, [sp]         //sp的值写入r0寄存器       
        mul     r1, r0, r0     //r1=r0*r0
        mov     r0, r1        //寻址 r1指向r0
        add     sp, sp, #4  //sp=sp+4     恢复 递增 
        bx      lr             //返回结果 指向lr寄存器 

int m = 8;
int fun(int a,int b)
{
    int c = 0;
    c = a + b;
    return c;
}
int main()
{
    int i = 4;
    int j = 5;
    m = fun(i, j);
    return 0;
}



fun(int, int):
        sub     sp, sp, #12
        str     r0, [sp, #8]
        str     r1, [sp, #4]
        mov     r0, #0
        str     r0, [sp]
        ldr     r0, [sp, #8]
        ldr     r1, [sp, #4]
        add     r0, r0, r1
        str     r0, [sp]
        ldr     r0, [sp]
        add     sp, sp, #12
        bx      lr
main:
        push    {r11, lr}
        mov     r11, sp
        sub     sp, sp, #16
        mov     r0, #0
        str     r0, [r11, #-4]
        mov     r1, #4
        str     r1, [sp, #8]
        mov     r1, #5
        str     r1, [sp, #4]
        ldr     r1, [sp, #8]
        ldr     r2, [sp, #4]
        str     r0, [sp]                        @ 4-byte Spill
        mov     r0, r1
        mov     r1, r2
        bl      fun(int, int)
        ldr     r1, .LCPI1_0
        str     r0, [r1]
        ldr     r0, [sp]                        @ 4-byte Reload
        mov     sp, r11
        pop     {r11, lr}
        bx      lr
.LCPI1_0:
        .long   m
m:
        .long   8                               @ 0x8


  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值