ATPCS详解:ARM与Thumb程序调用规则与寄存器使用指南
需积分: 13 68 浏览量
更新于2024-09-11
1
收藏 449KB PDF 举报
ATPCS(Advanced Thumb Procedure Call Standard)规范是ARM架构中为确保在C语言和汇编语言之间进行有效、兼容的子程序调用而制定的一套规则。它主要应用于ARM程序和Thumb程序,这两种模式在处理效率和指令集上有所不同。ATPCS的主要目标是统一调用过程中的寄存器使用、数据栈管理和参数传递策略。
首先,ATPCS的重要性在于它定义了跨语言调用时的接口一致性,这对于软件的可维护性和模块化至关重要。它要求所有参与调用的子程序,无论其源码语言(C或汇编),都需遵循相同的规则,这包括:
1. **寄存器规则**:
- 子程序间通过R0-R3寄存器(在ATPCS中称为A0-A3)传递参数,调用者无需恢复这些寄存器的内容。
- R4-R11(V1-V8)用于保存子程序内的局部变量,使用时需要在进入和退出子程序时保存和恢复它们。
- R12(ip,称为scratch寄存器)在子程序间通信中常作为临时存储。
- R13(sp,数据栈指针)在子程序中固定为栈指针,进入和退出时必须保持不变。
- R14(lr,连接寄存器)保存子程序的返回地址,必须正确处理。
2. **数据栈规则**:
- 数据栈的管理遵循特定的规则,确保在调用和返回时栈帧的正确布局。
3. **参数传递规则**:
- C语言编译器和链接器会根据用户选择的ATPCS类型自动处理参数传递,但汇编语言程序员需要手动确保遵守这些规则。
为了实现ATPCS,编译器会根据用户指定的ATPCS类型在ELF格式的目标文件中设置相应的属性,并在链接阶段选择相应的C语言库。在编写汇编语言程序时,开发者需要明确知道他们使用的ATPCS类型,并在编写代码时严格遵循上述规则,以确保子程序之间的调用能够无缝进行。
ATPCS规范是ARM开发中不可或缺的一部分,它简化了跨语言调用的复杂性,提高了代码的可移植性和效率。了解并遵循ATPCS规则,是确保ARM程序和Thumb程序中子程序调用正确性的重要步骤。
点击了解资源详情
274 浏览量
点击了解资源详情
点击了解资源详情
1292 浏览量
121 浏览量
221 浏览量
点击了解资源详情
101 浏览量
liulaing_h
- 粉丝: 1
- 资源: 15
最新资源
- rsa-src.zip
- 煤矿采煤机自动化与智能化技术研究.rar
- Highlight to Google Calendar-crx插件
- 博通网卡管理软件(Management Applications) v17.0.5.1 官方版
- peep-object:检查对象的所有组件
- NetThief81_8582.7z
- 大亨游戏
- Enegy-Generation-Company-SunSolar-ForntEnd-
- Rapid BSR-crx插件
- autocert:Python Web应用程序的自动TLS证书发行和续签
- 网上书店模板(有demo设计文档和界面源码,界面很帅哟,)
- TinyLinqJs:Linq-to-Objects 的 JavaScript 实现,以便将其与标准 JavaScript 数组一起使用
- arya.adslab
- Zet-crx插件
- 人脸检测编程实验工具.rar
- 腾达W522U无线USB网卡驱动