2014-12-03 81 views
1

我正在做一些使用ARM彙編器(特別是ARM7小端代碼)的測試,並且我找不到任何設置標誌/ CPSR寄存器的方法,而不使用算術指令間接設置它們。直接在ARM彙編器中設置CPSR標誌

有沒有一種方法可以直接寫入CPSR標誌呢?

+0

爲什麼你需要改變CPSR?可能有一種方法可以實現你真正需要的東西,而不需要直接調用寄存器。 – 2014-12-03 17:48:31

+0

[谷歌**設置手臂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

+0

[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

回答

1

您是否嘗試過MSR和MRS指令?

0

指令寫入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的立即數。