ARM调用约定是否允许函数不将LR存储到堆栈中?

问题描述 投票:0回答:1

正如标题所述,我在理解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体系结构的调用约定时遇到问题。特别是,当您调用...

assembly arm standards calling-convention
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.