ARM狀態(tài)寄存器訪問指令
arm中有兩條指令用于在狀態(tài)寄存器和通用寄存器之間傳送數(shù)據(jù)。 狀態(tài)寄存器中有些位是當(dāng)前沒有使用的,但在arm將來版本中有可能使用這些位,因此用戶程序不要使用這些位?! 〕绦虿荒芡ㄟ^直接修改cpsr中t的控制位直接將程序狀態(tài)切換到thumb狀態(tài),必須通過bx等指令完成程序狀態(tài)的切換?! ⊥ǔP薷臓顟B(tài)寄存器是通過“讀取-修改-寫回”的操作序列來實(shí)現(xiàn)?! 顟B(tài)寄存器訪問指令包括以下兩條?! 。?)mrs 狀態(tài)寄存器到通用寄存器的傳送指令 mrs(條件) <rd>' cpsr mrs指令用于將狀態(tài)寄存器的內(nèi)容傳送到通用寄存器中?! rs指令主要用于以下3種場合?! ねǔMㄟ^“讀取-修改-寫回“操作序列修改狀態(tài)寄存器的內(nèi)容。mrs指令用于將狀態(tài)寄存器的內(nèi)容讀到通用寄存器中?! ぎ?dāng)異常中斷允許嵌套時,需要在進(jìn)入異常中斷之后、嵌套中斷發(fā)生之前保存當(dāng)前處理器模式對應(yīng)的spsr j8時需要先通過mrs指令讀出spsr的值,再用其他指令將spsr保存起來。 ·在進(jìn)程切換時也需要保存當(dāng)前狀態(tài)寄存器值?! 。?)msr 通用寄存器到狀態(tài)寄存器的傳送指令 msr指令用于將通用寄存器的內(nèi)容或一個立即數(shù)傳送到狀態(tài)寄存器中。 msr指令通常用于恢復(fù)狀態(tài)寄存器的內(nèi)容或者改變狀態(tài)寄存器的內(nèi)容?! ‘?dāng)退出異常中斷處理程序時,如果事先保存了狀態(tài)寄存器的內(nèi)容(如在嵌套的異常中斷處理中),則通常通過msr指令實(shí)現(xiàn)將保存的狀態(tài)寄存器內(nèi)容恢復(fù)到狀態(tài)寄存器中?! ‘?dāng)需要修改狀態(tài)寄存器的內(nèi)容時,通過“讀?。薷模瓕懟亍敝噶钚蛄型瓿?。寫回操作也是通過msr指令完成的?! 】紤]到指令執(zhí)行的效率,通常在msr指令中指定指令將要修改的位域。
歡迎轉(zhuǎn)載,信息來源維庫電子市場網(wǎng)()