[英]Which register does store cmp result in arm?
我需要編寫一個函數,在工作后將除 r0-r3 之外的所有寄存器設置為其初始值。 我使用push和pop,但是我找不到哪個寄存器存儲了CMP的值。
更新。 謝謝你。 看來我錯了。 我有一個提示:“不要忘記被調用者保存寄存器”,所以它不建議將標志視為被調用者保存)
cmp
,就像所有帶有s
后綴的 ARM 指令一樣,如subs
、 s et 標志/條件代碼。 這些條件代碼存在於名為CPSR
( 當前程序狀態寄存器)的寄存器中。 還有https://en.wikipedia.org/wiki/ARM_architecture#Registers
在所有標准的函數調用約定中,標志/條件代碼都被調用破壞了。 您不需要保存/恢復呼叫者的 CPSR。 讓它和 r0..3 一起被調用破壞。
但是,如果您這樣做了,請參閱https://heyrick.eu/armwiki/The_Status_register以獲取類似的示例
MRS R0, CPSR ; Copy CPSR into R0
...
MSR CPSR, R0 ; Copy R0 into CPSR
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.