基于ARM 的C 语言与汇编语言混合编程 C 语言与汇编语言混合编程应遵守的规则 在使用C 语言时,要用到和汇编语言的混合编程。若汇编代码较为简洁,则可使用直接内嵌汇编的方法;否则要将汇编程序以文件的形式加入到项目中,按照ATPCS(ARM/Thumb 过程调用标准,ARM/ThumbProcedureCallStandard) 的规定与C 程序相互调用与访问。 在C 程序和ARM 汇编程序之间相互调用时必须遵守ATPCS 规则。ATPCS 规定了一些子程序间调用的基本规则,哪寄存器的使用规则,堆栈的使用规则和参数的传递规则等。ATPCS 规则 1) 寄存器的使用规则 子程序之间通过寄存器r0r3 来传递参数,当参数个数多于4 个时,使用堆栈来传递参数。此时r0r3 可记作A1A4。 在子程序中,使用寄存器r4r11 保存局部变量。因此当进行子程序调用时要注意对这些寄存器的保存和恢复。此时r4r11 可记作V1V8 。 寄存器r12 用于保存堆栈指针SP ,当子程序返回时使用该寄存器出栈,记作IP 。 寄存器r13 用作堆栈指针,记作SP 。寄存器r14 称为链接寄存器,记作LR 。该