arm函数调用和返回过程详解
来源:互联网 发布:got7直播软件 编辑:程序博客网 时间:2024/05/23 01:12
arm函数调用和返回过程详解
ATPCS建议函数的形参不超过4个,如果形参个数少于或等于4,则形参由R0,R1,R2,R3四个寄存器进行传递;若形参个数大于4,大于4的部分必须通过堆栈进行传递
0x00 简单的代码
使用arm-Linux-gcc编译,下同
int fun1(int nNum1, int nNum2){ int a = 3; int b = 3; return a+b+nNum1+nNum2;}int main() { int nSum = 0; getchar(); nSum = fun1(1,2); printf("sum: %d\n", nSum); return; }
函数调用和返回过程为
当保存现场只有1个寄存器时,ADD R11,SP,#0
通过BX LR返回。
函数退出时,堆栈和进入时一样,说明是自己平衡的堆栈。
0x01 复杂点的代码
#include <stdio.h> int fun1(int nNum1, int nNum2){ int a = 3; int b = 3; char szBuf[256] = { 0 }; strcpy(szBuf, "111111"); return a+b+nNum1+nNum2;}int main() { int nSum = 0; getchar(); nSum = fun1(1,2); printf("sum: %d\n", nSum); return; }
当保存现场2个寄存器时,ADD R11,SP,#4
阅读全文
0 0
- arm函数调用和返回过程详解
- arm函数调用和返回过程详解
- X86和ARM:函数调用参数传递和返回值
- ARM函数调用过程分析
- oracle 调用存储过程和函数返回结果集
- oracle调用存储过程和函数返回结果集
- oracle调用存储过程和函数返回结果集
- oracle调用存储过程和函数返回结果集
- 函数调用过程详解
- 函数调用过程详解
- 函数调用过程(详解)
- 详解函数的调用过程
- arm c函数的调用过程arm汇编语言调用C函数之参数传递
- 调用存储过程和返回结果集
- 函数栈帧(函数调用过程详解)
- SQLPLUS调用返回结果集的包中存储过程和函数
- 函数调用和返回过程栈帧结构变化图(C语言举例)
- x86 和 arm 的函数调用规则
- Game: snake
- 【C++】学习笔记四十八——this指针
- 贪吃蛇游戏代码
- javaWeb项目中文乱码容易忽略的点
- 基本排序算法
- arm函数调用和返回过程详解
- 存储的瓶颈(4)
- Shortest Names UVA
- Python核心模块——urllib模块
- C++之函数返回指针
- 存储的瓶颈(3)
- JSP中实现系统登录后的退出原理及代码 使session失效
- ECLIPSE配置jre
- Java配置----JDK开发环境搭建及环境变量配置