点亮一个LED之参数传递规则
2024-07-31 来源:cnblogs
1 说明
实验平台: JZ2440
CPU: S3C2440
2 ARM-THUMB Procedure Call Standard(ATPCS: ARM-Thumb过程调用标准)

图1 ATPCS中各寄存器的使用规则和名称
2.1 数据栈结构
我们使用的栈结构为FD(Full Descending)类型。注意:栈基址所指向的内存单元,不存放数据。
图2 栈结构
2.2 参数传递规则
根据参数个数是否固定,可以将子程序分为参数个数固定的子程序和参数个数可变的的子程序。
2.2.1 参数个数可变的子程序传递规则
参数传递时,可以将所有参数看作是存放在连续的存储字单元中的字数据。
当参数个数不超过4个时,使用寄存器R0-R3来传递参数,依次将各个字数据分别传送到寄存器R0-R3中去。
当参数个数超过4个时,还需使用数据栈来传递参数,把前4个字数据分别传送到寄存器R0-R3中去,剩余的字数据传送到数据栈中,需要注意的是,入栈顺序与参数顺序相反,即最后一个字数据先入栈。
2.2.2 参数个数固定的子程序传递规则
第一个整数参数通过寄存器R0-R3来传递,其他参数通过数据栈传递。
2.2.3 子程序结果返回规则
结果为一个32位的整数时,可以通过寄存器R0来返回。
结果为一个64位的整数时,可以通过寄存器R0和R1来返回,以此类推。
对于位数更多的结果,需要通过内存来反回。
3 反汇编代码分析

附录1:源码
Start.S

main.c

相关文章
- 六大全新产品系列推出,MCX A微控制器家族迎来创新
- 意法半导体全新STM32C5系列,重新定义入门级微控制器性能与价值,赋能万千智能设备
- 模组复用与整机重测在SRRC、CCC、CTA/NAL认证中的实践操作指南
- 有源晶振与无源晶振的六大区别详解
- 英飞凌持续巩固全球微控制器市场领导地位
- 使用 Keil Studio for Visual Studio Code开发 STM32 设备
- 从控制到系统:TI利用边缘AI重塑嵌入式MCU的边界
- 蓝牙信道探测技术原理与开发套件实践
- Microchip 推出生产就绪型全栈边缘 AI 解决方案,赋能MCU和MPU实现 智能实时决策
- LoRa、LoRaWAN、NB-IoT与4G DTU技术对比及工业无线方案选型分析
热门新闻




