伪操作看得懂就行,其他的有要编程的要求 重点为 .LDR C/汇编混合编程 ATPCS
ATPCS
ARM-Thumb过程调用规范
PPT第四章P36可见例子。把例子背一下罢。
寄存器使用规则
- R0-R3:用于传参,R0用于返回值
- R4-R11:通用变量寄存器
- R9:静态基址寄存器SB
- R10:数据栈限制指针SL
- R11:帧指针FP
- R12:用作过程调用中间临时过渡寄存器IP
- R13:堆栈指针
- R14:连接寄存器LR
- R15:PC
数据栈的使用规则
ATPCS规定数据栈为FD类型。并对数据栈的操作是8字节对齐的。参数的传递规则
C和汇编混合编程
在C中调用汇编函数
C文件中
C中声明函数原型,并加extern关键字。
汇编文件中
- 在汇编中开头用EXPORT(伪指令用.global)导出函数名,并用该函数名作为汇编代码段的标识
- 末尾用mov pc, lr 返回
- 就可以在C中使用该函数了。
在汇编中调用C函数
- 使用.extern声明C函数
- 将当前lr保存到sp中(需要减4)
- 将参数放入指定寄存器
- 使用bl指令跳转到声明的C函数中
- 随后将sp里的lr装进pc,sp需要加4(返回main函数)

