正如标题所述,我在理解ARM体系结构的调用约定时遇到问题。特别是,当您调用子例程时,我仍然很难知道LR寄存器会发生什么。
我认为输入子例程时处理LR寄存器最明显,最安全的方法是将其存储到堆栈中,但是该行为并未出现在文档中,因此我想到了以下示例。
我将用C编写它,因为我认为这样更容易解释。假设您只有两个功能
void function_1(void){
//some code here
}
void function_2(void){
//some code here
function_1();
//some code here
}
我在function_1
中使用LR寄存器的方式就像我之前说过的,我会将其值存储在堆栈中,但是如果您看得更近,function_1不会调用任何其他子例程,因此这是不必要的。
[在使用ARM编译器时,该编译器可能会决定not将LR存储到堆栈中吗?
我在infocenter的网络中阅读了有关呼叫标准的信息>
正如标题所述,我在理解ARM体系结构的调用约定时遇到问题。特别是,当您调用...