ARM-THUMB混合编程规范详解

需积分: 10 20 下载量 158 浏览量 更新于2024-11-30 收藏 165KB PDF 举报
"The ARM-THUMB Procedure Call Standard SWSESPC0002B-01" 这篇文档详细阐述了ARM和THUMB指令集的混合编程过程中的一种程序调用标准,即ATPCS(ARM-THUMB Procedure Call Standard)。ATPCS是针对C语言和汇编语言混合编程时的一套约定,旨在确保不同编译器产生的代码能够正确地互相调用,保持兼容性和可预测性。 1. 关于文档: - **变更控制**:文档状态和预期变更的描述,以及变更历史记录,用于跟踪文档的更新和改进。 - **参考文献**:列出相关的重要参考资料,帮助读者深入理解标准的背景和依据。 - **术语和缩写**:定义了文档中使用的专业术语和缩写,以便于理解。 2. 范围: - 指明了文档适用的范围,可能包括特定的处理器架构、操作系统或特定类型的软件开发。 3. 引言: - **设计目标**:阐述了制定此标准的目的,可能包括提高代码效率、跨编译器兼容性和可维护性等。 - **一致性**:描述了如何确定代码是否符合该标准的要求。 - **过程、内存模型和堆栈**:解释了在混合编程环境中如何处理过程调用、内存分配和堆栈操作。 - **预条件和后条件**:在调用和被调用函数之间设定的必须满足的条件。 4. 基本标准: - **机器寄存器**:定义了哪些寄存器用于存储临时数据,哪些是保留的,以及如何使用它们。 - **浮点寄存器**:如果支持浮点运算,说明了如何传递和存储浮点参数和返回值。 - **子程序调用**:详细说明了调用子程序时寄存器和堆栈的管理,包括返回地址的保存和恢复。 - **参数传递**:规定了如何将参数从调用者传递到被调用者,包括固定数量和可变数量参数的处理方式。 5. 变量数量: - 可能进一步详细说明在参数传递中如何处理变量数量的参数列表,可能涉及到动态内存分配或寄存器堆栈的使用。 这个标准对于理解如何在ARM和THUMB架构上混合使用C和汇编语言编写高效且兼容的代码至关重要,它定义了清晰的规则,使得开发者可以编写出相互之间可以正确交互的函数和子程序。遵循ATPCS,开发者可以确保其代码在不同的环境和编译器下都能够正确运行,提高了软件的可移植性和可靠性。