1.22.ARM彙編指令集10之雜項指令
這裡記錄的ARM雜項指令包括: SWI & MRS & MSR
* SWI (這個指令中關於立即數的詳細作用等我以後用到再詳細瞭解一下,這裡先大概知道一下)
軟中斷指令,SWI指令用於產生軟中斷,從而實現在使用者模式下變換到管理模式,CPSR儲存到管理模式的SPSR中,執行轉移到SWI向量,在其它模式下也可以使用SWI指令,處理用於的切換到管理模式。
指令格式:
SWI{cond} immed_24
其中:
immed_24: 24位立即數
eg:
SWI 0
SWI 0x123456
注:等以後用到這個指令之後再詳細回來重寫這個指令
* MRS
讀狀態暫存器指令,在ARM處理器中,只有MRS指令可以將狀態暫存器(CPSR/SPSR)讀出到通用暫存器。
指令格式:
MRS{cond} Rd,psr
其中:
Rd: 目標暫存器,不能為R15(PC)
psr: CPSR/SPSR
eg:
MRS R1,CPSR
* MSR
寫狀態暫存器指令,在ARM處理器中,只有MSR指令可以直接設定狀態暫存器。
指令格式:
MSR{cond} psr_fields,#immed_8r
MSR{cond} psr_fields,Rm
其中:
psr: CPSR/SPSR
fields: 指定傳送的區域。格式為下面的一種或多種,字母都是小寫
c控制域遮蔽位元組(psr[7~0])
x拓展域遮蔽位元組(psr[18~8])
s狀態域遮蔽位元組(psr[23~19])
f標誌域遮蔽位元組(psr[31~24])
#immed_8: 要傳送到狀態暫存器指定域的8位立即數
Rm: 要傳送到狀態暫存器指定域的資料的源暫存器
eg:
MSR CPSR_c #0x03
MSR CPSR_cxsf,R3
注:只有在特權模式下才能修改狀態暫存器(除了使用者模式外的其它的6種模式)
程式中不能通過MSR指令直接修改CPSR的T控制位來實現ARM狀態和Thumb狀態的切換。