关于C语言函数调用汇编时参数大于4个的时候该如何传参
来源:互联网 发布:数据库表空间导出 编辑:程序博客网 时间:2024/06/06 10:04
我们用一个简单的测试例子来说明
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 r0, r1, r0
8: e12fff1e bx lr
这样,我们就能很容易的知道参数5,参数6在汇编中是如何得到的,如下
ldm sp, {r0, r1}
当然这个是优化后的结果,一般我们会写成,例如
ldm sp, {r4, r5}
如果是只要参数5的话可以写成下面的
ldr r5, [sp]
如果是只要参数7的话可以写成下面的
ldr r1, [sp, #8]
测试代码下载
阅读全文
0 0
- 关于C语言函数调用汇编时参数大于4个的时候该如何传参
- 关于在C/C++语言中,函数如何返回数组,数组如何作为参数传递以及返回数组的函数该如何调用问题的总结
- 关于C语言中函数调用和参数传递机制的探讨--汇编
- C语言中调用汇编子过程时参数在栈中是如何调用的
- C语言函数调用的汇编实现
- 关于C语言中函数调用和参数传递机制的探讨(三 .传递多个参数等)
- c语言学习--关于函数的参数传递(汇编和可执行文件)
- C语言函数调用传递参数时的类型退化
- C语言函数参数入栈的汇编理解
- c语言里如何调用汇编里的变量?
- 关于C语言函数调用的问题
- 从汇编看c语言函数调用
- 从汇编看c语言函数调用
- 关于C语言中函数调用和参数传递机制的探讨
- 关于C语言中函数调用和参数传递机制的探讨
- 关于C语言中函数调用和参数传递机制的探讨
- 关于C语言中函数调用和参数传递机制的探讨
- 关于C语言中函数调用和参数传递机制的探讨(zz)
- 不得不使用的百度快照优化seo技巧
- 17089 最大m子段和(scauoj、dp动态规划)
- ubantu下彻底删除Mysql
- C#继承(四)——接口
- HDOJ2085 核反应堆
- 关于C语言函数调用汇编时参数大于4个的时候该如何传参
- C#中Linq的使用
- 【SublimeText3】输入法候选窗口跟随光标/安装插件
- 模拟实现库函数---qsort
- 数列的极限
- 2017十年腾讯大牛讲解---- Java并发编程:volatile关键字解析
- three.js轨道控制器OrbitControls.js
- 55. 时间服务器 : NTP 服务器
- 队列(Queue)