我是ARMv8架構的新手。我在腦海中有以下基本問題:什麼是當前執行模式/異常級別等?
如何知道當前執行模式AArch32或AArch64是什麼?我應該閱讀CPSR還是SPSR來確定?
什麼是當前異常級別EL0/1/2/3?
一旦發生異常,我可以讀取任何寄存器以確定我是否處於Serror/Synchronous/IRQ/FIQ異常處理程序。
TIA。
我是ARMv8架構的新手。我在腦海中有以下基本問題:什麼是當前執行模式/異常級別等?
如何知道當前執行模式AArch32或AArch64是什麼?我應該閱讀CPSR還是SPSR來確定?
什麼是當前異常級別EL0/1/2/3?
一旦發生異常,我可以讀取任何寄存器以確定我是否處於Serror/Synchronous/IRQ/FIQ異常處理程序。
TIA。
#ifdef
)通過像由armclang
提供的那些編譯器提供的宏完成:__aarch64__
爲64位,__arm__
爲32位MRS <Rn>, CPSR
將當前狀態讀入寄存器編號n。然後提取包含當前模式的位3:0。MRS <Xn>, CurrentEL
讀取當前EL到寄存器個數n
「我怎麼知道當前的執行模式AArch32或AArch64?」 - 我想如果代碼試圖檢查模式是編譯爲64位,模式是64位;如果它編譯爲32位,則該模式爲32位。 – JimmyB