为什么状态寄存器(CPSR)在ARM中没有被压入堆栈?

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

研究 ARM Thumb 指令集时,我注意到虽然通用寄存器和链接寄存器(大部分时间)被压入堆栈,但状态寄存器 (CPSR) 没有。这让我感到惊讶,因为状态寄存器是程序状态的一部分,需要在子程序结束后恢复。状态寄存器未保存是否有原因?

assembly arm cpu-registers calling-convention
1个回答
1
投票

大学时用thumb2写了一部分OS。当您从处理程序模式切换到非特权线程模式时,有时您会看到 CSPR 被压入堆栈,反之亦然。切换模式时,几乎所有寄存器都被弹出/压入堆栈。

相同模式下从子程序返回时,ARM约定不维护它,但可以手动保存和引用上次事务的标志。

© www.soinside.com 2019 - 2024. All rights reserved.