ARM嵌入式系统软件设计精要.ppt

* 例如:有5个参数,分别使用寄存器R0存放第1个参数,寄存器R1存放第2个参数,寄存器R2存放第3个参数,寄存器R3存放第4个参数,第5个参数利用数据栈传送。由于利用数据栈传递参数,在程序结束后要调整数据栈指针。? //C程序g()返回5个整数的和 int g (int a, int b, int c, int d, inte) { ?? return (a+b+c+d+e); }? ? //汇编程序调用C程序g()计算5个整数i, 2*i, 3*i, 4*i, 5*i的和 EXPORT? f AREA? f, CODE, READONRY IMPORT? g?????????????????? //使用伪操作IMPORT声明C程序g() STR? LR, [SP, #-4]!???????? //保存返回地址 ADD? R1,?R0, R0???????????? //假设进入程序f时,R0中的值为i,R1值为2*i ADD? R2, R1, R0?????????????//R2的值为3*i ADD? R3, R1, R2???????????? //R3的值为5*i STR? R3, [SP, #-4]!???????? //第5个参数5*i通过数据栈传递 ADD? R3, R1, R1???????????? //R3的值为4*i

文档评论(0)

1亿VIP精品文档

相关文档