(1)C和C与汇编区别参数传递
规定參数在4个以内依次对应r0-r3寄存器
参数在4个以外,用栈传递
(2)返回值传递 规定使用r0
(3)使用栈类型 规定使用满减栈
a、文件和文件之间跳转 C與汇编区别文件:
b、在C语言中专门内嵌一个特殊函数:asm GNU编譯环境下:
说明: 1)如果害怕编译器优化内嵌C与汇编区别代码在__asm__后加__volatitle__防止编译器优化
Guide的2.1节这篇文档要讲的是 C与汇编區别代码中对C函数调用时如何进行参数的传递以及如何从C函数正确返回。
不同于x86的参数传递规则ATPCS建议函数的形参不超过4个,如果形参个數少于或等于4则形参由R0,R1,R2,R3四个寄存器进行传递;若形参个数大于4,大于4的部分必须通过堆栈进行传递
lr入栈,调用完test_c_args之后再把刚才保存在棧中的lr写回pc,这样才能返回到main函数中
这部分的代码和实例1的代码大部分是相同的,不同的地方是test_c_args的参数个数和test_asm_args的参数传递方式