簡體   English   中英

哪個寄存器將 cmp 結果存儲在 arm 中?

[英]Which register does store cmp result in arm?

我需要編寫一個函數,在工作后將除 r0-r3 之外的所有寄存器設置為其初始值。 我使用push和pop,但是我找不到哪個寄存器存儲了CMP的值。

更新 謝謝你。 看來我錯了。 我有一個提示:“不要忘記被調用者保存寄存器”,所以它不建議將標志視為被調用者保存)

cmp ,就像所有帶有s后綴的 ARM 指令一樣,如subss 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM