12.9 专用指令
目录
状态寄存器传送指令
读CPSR
写CPSR
软中断指令
协处理器指令
协处理器数据运算指令
协处理器存储器访问指令
协处理器寄存器传送指令
伪指令
@空指令
@LDR
指令
伪指令
状态寄存器传送指令
专门用来读写CPSR寄存器的指令
读CPSR
MRS R1,CPSR
R1 = CPSR
写CPSR
MSR CPSR, #0x10
在USER模式下不能修改CPSR,非特权模式
MSR CPSR ,#0xD3
软中断指令
异常向量表中SWI就是软中断,在SWI中写入B指令跳转到用户写的异常的地址,过程参ARM异常响应注意查看CPSR寄存器的状态
协处理器指令
ARM是一个通用的CPU核,只支持一些通用的运算指令,如加减乘
当遇到特殊的运算,如图像处理等,就需要用到协处理器来处理
协处理器种类繁多
ARM最多可以加16个协处理器
嵌入式常见协处理器
FPU:计算浮点型数据的处理器
CP15:帮助ARM对存储器进行管理,如高速缓存、异常向量表、控制MMU(存储器管理单元,管理物理内存与虚拟内存间的关系)
协处理器数据运算指令
CDP
协处理器存储器访问指令
STC 将协处理器中的数据存储到存储器中
LDC 将存储器中的数据读取到协处理器中
协处理器寄存器传送指令
MRC 将协处理器中寄存器的数据传送到ARM处理器中的寄存器
MCR 将ARM处理器寄存器中的数据传送到协处理器中的寄存器
伪指令
本身不是指令,编译器 可以将其替换成若干条指令
@空指令
NOP
@LDR
根据格式的不同可以作为指令也可以作为伪指令
指令
LDR R1, [R2]
将R2地址中的数据,读取到R1寄存器
伪指令
LDR R1, =0x12345678
@R1=0x12345678,可以将任意一个32位的数据放入寄存器中
LDR R1, =STOP
@将STOP的地址写入R1寄存器
LDR R1, STOP
@将STOP的地址中的内容写入R1寄存器