编译器会试图对C函数中的每个局部变量分配一个寄存器。如果几个局部变量不会交叠使用,编译器会对他们分配相同的寄存器。
当局部变量多于可用的寄存器时,编译器会使用堆栈存放这些变量。
ARM Thumb过程调用标准ATPCS:
R0~R3用于传参,RO用于返回值
R4~R11通用变量寄存器
R12临时过渡寄存器
R13堆栈指针
R14连接寄存器
R15 PC
所有局部变量不要超过12个
编译器会试图对C函数中的每个局部变量分配一个寄存器。如果几个局部变量不会交叠使用,编译器会对他们分配相同的寄存器。
当局部变量多于可用的寄存器时,编译器会使用堆栈存放这些变量。
ARM Thumb过程调用标准ATPCS:
R0~R3用于传参,RO用于返回值
R4~R11通用变量寄存器
R12临时过渡寄存器
R13堆栈指针
R14连接寄存器
R15 PC
所有局部变量不要超过12个