要求
ATPCS 介绍
ATPCS中寄存器的使用规则
在进行子函数调用时,当子函数中有参数时,子程序间通过寄存器R0、R1、R2、R3来传递参数,如果参数多于4个,则多出的部分用堆栈传递,被调用的子程序在返回前无须恢复寄存器R0~R3的内容。
在子程序中,使用寄存器R4~R11来保存局部变量。如果在子程序中使用到了R4~R11中的某些寄存器,子程序进入时必须保存这些寄存器的值,在返回前必须恢复这些寄存器的值;对于子程序中没有用到的寄存器则不必进行这些操作。在Thumb 程序中,通常只能使用寄存器R4~R7来保存局部变量。
寄存器R12用作子程序间scratch寄存器(用于保存SP,在函数返回时使用该寄存器出栈),记作ip。在子程序间的连接代码段中常使用这种规则。
寄存器R13用作数据栈指针,记作sp,sp中存放的是当前使用的栈的栈顶的地址。在子程序中寄存器R13不能用作其他用途。寄存器sp在进入子程序时的值和退出子程序时的值必须相等。
寄存器R14称为连接寄存器,记作lr。它用于保存子程序的返回地址。如果在子程序中保存了返回地址,寄存器R14则可以用作其他用途。
寄存器R15是程序计数器,记作pc。它不能用作其他用途。
数据栈使用规则
参数传递规则
ARM和Thumb混合编程
工作状态
工作状态切换编程(有时间看,没时间不看)
1. BX实现状态切换
2. BLX实现状态切换
3.LDR、LDM及POP指令实现程序状态的切换
押题
课堂测试题
1、
答案:
2、
解析:
故选CEDF
3、
答案:CD
4、
答案:
BD;C