是否会始终先使用R0寄存器?

时间:2019-01-31 07:48:33

标签: arm embedded armcc

编译器是否总是按顺序使用R0?

2 个答案:

答案 0 :(得分:1)

您的问题可能需要更多的上下文才能清楚地说明您所指的是什么,但是ARM Procedure Call Standard定义了符合的编译器如何专门使用5.1.1节中的特定寄存器。

R0用于保存函数调用的第一个参数,并返回结果值。它也可以随便用作暂存器,以随函数调用保存临时或中间值。

enter image description here

答案 1 :(得分:1)

float fun ( float a )
{
    return(a+1.0F);
}
00000000 <fun>:
   0:   eddf7a01    vldr    s15, [pc, #4]   ; c <fun+0xc>
   4:   ee300a27    vadd.f32    s0, s0, s15
   8:   e12fff1e    bx  lr

没有r0不会总是被其他任何东西使用。