我正在做一些使用ARM彙編器(特別是ARM7小端代碼)的測試,並且我找不到任何設置標誌/ CPSR寄存器的方法,而不使用算術指令間接設置它們。直接在ARM彙編器中設置CPSR標誌
有沒有一種方法可以直接寫入CPSR標誌呢?
我正在做一些使用ARM彙編器(特別是ARM7小端代碼)的測試,並且我找不到任何設置標誌/ CPSR寄存器的方法,而不使用算術指令間接設置它們。直接在ARM彙編器中設置CPSR標誌
有沒有一種方法可以直接寫入CPSR標誌呢?
您是否嘗試過MSR和MRS指令?
指令寫入PSR。請注意,在ARM7中,它只能在特權模式下使用(對於某些CPSR字段的非特權訪問,APSR的概念出現在以後的體系結構中)。
的ARMV4T參考手冊包括清除標誌的這個具體的例子:
MRS R0, CPSR ; Read the CPSR
BIC R0, R0, #0xf0000000 ; Clear the N, Z, C and V bits
MSR CPSR_f, R0 ; update the flag bits in the CPSR
注讀 - 修改 - 寫操作來保存保留位用於寄存器的形式。對於設置標誌的具體情況,如果您向保留位寫入0,則允許直接寫入CPSR_f
的立即數。
爲什麼你需要改變CPSR?可能有一種方法可以實現你真正需要的東西,而不需要直接調用寄存器。 – 2014-12-03 17:48:31
[谷歌**設置手臂CPSR **](https://www.google.com/#q=setting+arm+cpsr)和[第二擊是heyrick](http://www.heyrick.co.uk/armwiki/The_Status_register)有哪些信息。 – 2014-12-03 17:56:56
[arm標籤](http://stackoverflow.com/search?q= [arm] + cpsr +是%3Aquestions)中還有很多其他問題可以回答您的問題,例如[訪問存儲庫](http://stackoverflow.com/questions/2784978/explicitly-accessing-banked-registers-on-arm)。 – 2014-12-03 18:03:14