理解ATPCS:ARM与Thumb程序调用规范
5星 · 超过95%的资源 需积分: 9 140 浏览量
更新于2024-09-18
收藏 455KB PDF 举报
"ATPCS(ARM Thumb Procedure Call Standard)是ARM处理器中的一种调用约定,用于规范C语言和汇编语言之间子程序调用的规则,确保二者能正确交互。ATPCS主要关注寄存器使用、数据栈管理和参数传递等方面,以确保程序的兼容性和可维护性。"
在ATPCS中,主要的规则可以分为以下几类:
1. **寄存器使用规则**:
- R0-R3(也称为A0-A3)用于传递函数参数,子程序结束时不需要恢复这些寄存器的值。
- R4-R11(V1-V8)作为局部变量寄存器,如果使用,需在进入子程序时保存其值,并在退出前恢复。
- R12(ip)用作临时工作寄存器,通常在子程序之间的连接代码中使用。
- R13(sp)作为数据栈指针,其值在子程序开始和结束时必须保持一致。
- R14(lr)是连接寄存器,用于存储子程序的返回地址。
2. **数据栈使用规则**:
- 数据栈由R13(sp)管理,其增长方向通常是向下。在子程序中,R13不能用作其他目的,必须保持栈的完整性和一致性。
3. **参数传递规则**:
- 参数通常通过寄存器R0-R3传递,超出4个参数的部分可能需要通过栈来传递。
- 在Thumb模式下,由于寄存器限制,通常只使用R4-R7来保存局部变量。
4. **C语言库与链接器支持**:
- 编译器和汇编器会根据用户选择的ATPCS类型在目标文件中设置相应的属性。
- 链接器会根据指定的ATPCS类型连接合适的C语言库,以保证调用一致性。
5. **汇编语言程序的注意事项**:
- 汇编语言程序员需要确保子程序遵循选定的ATPCS,包括寄存器的使用、栈管理以及参数传递的规则。
- 使用汇编编译器时,需要添加`-apcs`选项来指定使用ATPCS。
ATPCS是ARM体系结构中关键的组成部分,它确保了不同模块之间的接口规范,使得开发者能够在C和汇编语言之间自由切换,而不会出现兼容性问题。了解并遵循ATPCS规则对于编写高效、可靠的ARM平台代码至关重要。在实际编程中,开发者需要根据具体的项目需求和处理器模式(ARM或Thumb)来灵活应用这些规则。
2011-01-23 上传
2022-09-22 上传
2009-04-19 上传
2023-04-21 上传
2023-04-21 上传
2023-04-21 上传
2023-06-10 上传
2023-12-04 上传
2009-07-10 上传
jinwenjie2010
- 粉丝: 6
- 资源: 32
最新资源
- 前端协作项目:发布猜图游戏功能与待修复事项
- Spring框架REST服务开发实践指南
- ALU课设实现基础与高级运算功能
- 深入了解STK:C++音频信号处理综合工具套件
- 华中科技大学电信学院软件无线电实验资料汇总
- CGSN数据解析与集成验证工具集:Python和Shell脚本
- Java实现的远程视频会议系统开发教程
- Change-OEM: 用Java修改Windows OEM信息与Logo
- cmnd:文本到远程API的桥接平台开发
- 解决BIOS刷写错误28:PRR.exe的应用与效果
- 深度学习对抗攻击库:adversarial_robustness_toolbox 1.10.0
- Win7系统CP2102驱动下载与安装指南
- 深入理解Java中的函数式编程技巧
- GY-906 MLX90614ESF传感器模块温度采集应用资料
- Adversarial Robustness Toolbox 1.15.1 工具包安装教程
- GNU Radio的供应商中立SDR开发包:gr-sdr介绍