关于C语言函数调用汇编时参数大于4个的时候该如何传参

这篇博客通过一个简单的测试例子,解释了当C语言函数参数超过4个时,如何在汇编层面上进行参数传递。通过反汇编`fun`函数,展示了如何使用`ldm`和`ldr`指令从堆栈中获取参数5、6和7。优化后的汇编代码使得理解参数传递过程更加清晰。
摘要由CSDN通过智能技术生成

我们用一个简单的测试例子来说明

int fun(int a,int b,int c,int d,int e,int f,int g);
//extern "C" int fun1(int a,int b,int c,int d,int e,int f,int g);

int main()
{
int flm = fun(1,2,3,4,5,6,7);
return 0;
}

int fun(int a,int b,int c,int d,int e,int f,int g){
 a = e;
 b =f;
return (e + f);
}

经过反汇编后得到下面的结果

Disassembly of section .text._Z3funiiiiiii:

00000000 <_Z3funiiiiiii>:
   0: e89d0003 ldm sp, {r0, r1}
   4: e0810000 add

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值