1.22.ARM汇编指令集10之杂项指令

来源:互联网 发布:加内特体测数据 编辑:程序博客网 时间:2024/06/07 06:35

这里记录的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状态的切换。



原创粉丝点击