【发布时间】:2021-01-23 17:49:04
【问题描述】:
我需要编写一个函数,在工作后将除 r0-r3 之外的所有寄存器设置为其初始值。我使用push和pop,但是找不到哪个寄存器存储CMP的值。
UPD。谢谢你。看来我错了。我的作业有一个提示:“不要忘记被调用者保存寄存器”,所以它并不建议将标志视为被调用者保存)
【问题讨论】:
-
那就是
CPSR。但是你不能直接访问CPSR;相反,您可以通过例如间接访问它条件分支指令。 -
函数一般不关心标志,中断是,函数不关心。根据内核,它可能已经在为您执行此操作(用于中断)
-
您正在为哪个 ARM 变体编程?
-
如果您的问题需要与原始问题完全不同的答案,请提出新问题。我回滚了你的大部分编辑,这把这变成了一个完全不同的问题,关于调试你对某事的尝试。如果我的回答回答了这个问题,您可以使用投票箭头下方的复选框将其标记为“已接受”。
标签: assembly arm cpu-registers calling-convention status-register