- 11
- 0
- 约5.18千字
- 约 24页
- 2017-03-26 发布于浙江
- 举报
第3章4 ARM指令集及程序设计
3.4 ATPCS介绍 * 完全使用汇编语言来编写程序会非常的繁琐,因此通常情况下,只是使用汇编程序来完成少量必须由汇编程序才能完成的工作,而其它工作则由C语言程序来完成。这样一来,我们实际上就是在进行汇编和C的混合编程,甚至同一个程序的汇编源文件和C源文件是由不同的程序员编写的。在这种情况下,要想使不同程序员编写的汇编代码和C代码能耦合的很好,则必须有一个双方都必须遵守的规则,这就是ATPCS规则。 为了使单独编译的C语言程序和汇编程序之间能够相互调用,必须为子程序间的调用规定一定的规则。ATPCS就是ARM程序和Thumb程序中子程序调用的基本规则。 什么是ATPCS规则 * * 1 ATPCS概述 ATPCS规定了一些子程序间调用的基本规则。这些基本规则包括子程序调用过程中寄存器、数据栈的使用规则以及参数的传递规则。 这些特定的调用规则包括: 支持数据栈限制检查的ATPCS。 支持只读段位置无关 ROPI 的ATPCS。 支持可读写段位置无关 RWPI 的ATPCS。 支持ARM程序和Thumb程序混合使用的ATPCS。 处理浮点运算的ATPCS。 * 1.1 ATPCS概述 使用ADS的C语言编译器编译的C语言子程序满足用户指定的ATPCS类型。 对于汇编语言程序来说,完全要依赖用户来保证各子程序满足选定的ATPCS类型。具体来说,汇编语言子程序必须满足下面3个条件: 在子程序编写时必须遵守相应的ATPCS规则。 数据栈的使用要遵守相应的ATPCS规则。 在汇编编译器中使用–apcs选项。 * 1.2 基本ATPCS 基本ATPCS规定了在子程序调用时的一些基本规则,包括下面3方面的内容: 各寄存器的使用规则及其相应的名称。 数据栈的使用规则。 参数传递的规则。 * 1.2.1 寄存器的使用规则 寄存器的使用必须满足下面的规则。 子程序间通过寄存器R0~R3来传递参数。 在子程序中,使用寄存器R4~R11来保存局部变量。 寄存器R12用作子程序调用中临时寄存器,记作ip。在子程序之间的连接代码段中常常有这种使用规则。 寄存器R13用作数据栈指针,记作sp。在子程序中寄存器R13不能用作其他用途。寄存器sp在进入子程序时的值和退出子程序时的值必须相等。 寄存器R14称为链接寄存器,记作lr。 寄存器R15是程序计数器,记作pc。它不能用作其他用途。 * 1.2.2 数据栈使用规则 栈指针通常可以指向不同的位置。当栈指针指向栈顶元素 即最后一个入栈的数据元素 时,称为FULL栈;当栈指针指向与栈顶元素 即最后一个入栈的数据元素 相邻的一个可用数据单元时,称为EMPTY栈。 综合这两种特点可以有以下4种数据栈。 FD Full Descending ED Empty Descending FA Full Ascending EA Empty Ascending * 1.2.2 数据栈使用规则 下面是一个数据栈的示例 如图6.1所示 及其相关的名词。 * 1.2.2 数据栈使用规则 数据栈栈指针 stack pointer 是指最后一个写入栈的数据的内存地址。 数据栈的基地址 stack base 指数据栈的最高地址。由于ATPCS中数据栈是FD类型的,实际上数据栈中最早入栈的数据占据的内存单元是基地址的下一个内存单元。 数据栈界限 stack limit 是指数据栈中可以使用的最低的内存单元的地址。 * 1.2.2 数据栈使用规则(续) 已占用的数据栈 used stack 是指数据栈的基地址和数据栈栈指针之间的区域。其中包括数据栈栈指针对应的内存单元,但不包括数据栈的基地址对应的内存单元。 未占用的数据栈 unused stack 是指数据栈栈指针和数据栈界限之间的区域。其中包括数据栈界限对应的内存单元,但不包括数据栈栈指针对应的内存单元。 数据栈中的数据帧 stack frames 是指在数据栈中,为子程序分配的用来保存寄存器和局部变量的区域。 1.2.3 参数传递规则 根据参数个数是否固定,可以将子程序分为参数个数固定的子程序和参数个数可变化的子程序。 这两种子程序的参数传递规则是不一样的。 参数个数可变子程序参数传递规则 对于参数个数可变的子程序,当参数个数不超过4个时,可以使用寄存器R0~R3来传递参数;当参数超过4个时,还可以使用堆栈来传递参数。 在传递参数时,将所有参数看作是存放在连续的内存字单元的字数据。然后,依次将各字数据传递到寄存器R0,R1,R2和R3中。如果参数多于4个,则将剩余的字数据传递到堆栈中。入栈的顺序与参数传递顺序相反,即最后一个字数据先入栈。 参数个数固定子程序参数传递规则 如果系统不包含浮点运算的硬件部件,浮点参数会通过相应的规则
您可能关注的文档
最近下载
- 制造业信息化战略规划实施与优化-PDM.docx VIP
- 那智不二越机器人flexgui toolbox操作说明书.pdf VIP
- 智慧工厂-智慧工厂解决方案.docx VIP
- 高中化学解题方法归纳:和量法.doc VIP
- 译林牛津新版高中英语(必修1-3)单词表.pdf VIP
- 包装有限公司分切机安全风险分级清单.docx VIP
- 重庆市西南大学附属中学2025届高三下学期二诊模拟考试物理试卷 含解析.docx VIP
- 【高中英语】《星火英语同步词汇》抗遗忘速记手册.docx VIP
- 成都市锦江区2026届初三一诊(暨期末考试)数学试卷(含答案).docx
- 三坐标 培训教程.pptx VIP
原创力文档

文档评论(0)