汇编指令
状态寄存器指令
对CPSR进行读写操作//其他都不能动CPSR (SWI 指令是linux内核有,所以arm为了匹配才有的指令)(CPSR保存cpu的状态、模式、中断中断开关、运算状态,非常重要,不能任意更改,只有一类指令能操作这个寄存器)
1》读cpsr 指令mrs
2》写cpsr 指令 msr :一般用不了,上电就是svc模式,能切换到user模式(也可以切换到其他模式)但是user模式不能切换到svc模式 其他的可以切换到svx模式 user的权限是最低的 为非特权模式
注:修改CPSR的控制域(bit[7:0]),修改CPSR时必须指定修改哪个区域
USER模式下不能修改CPSR的值,防止应用程序修改CPU状态,保护操作系统
CPSR_C修改的是CPSR的低八位ctrl(控制)域,一般都只修改C域
异常中断产生指令(异常处理时讲)
触发软中断,常用于内核的系统调用 //SWI:软中断
正真触发软中断的处理过程代码验证:
视频动态演示: https://live.youkuaiyun.com/v/267716
了解:协处理器指令+伪指令+伪操作
- 协处理器指令
操作协处理器的指令(用不到) (协助cpu处理数据)
1.数据运算
2.内存访问
3.与主处理器通信
MRC 将协处理器中寄存器的内容读取到ARM处理器的寄存器中
MCR 将ARM理器中寄存器的内容读取到协处理器的寄存器中
- 伪指令
本质:本身不是指令,但是cpu替换成等效的操作。(可能会编程成)
举例1:延时一个指令周期(耗时一条指令的时间) (cpu没有这个指令)
NOP ;执行NOP和MOV R0,R0一个效果,执行NOP,cpu替换成MOV R0,R0。
MOV R0,R0
LDR的两种形式
;->指令
LDR R1,[R2]
;->伪指令
LDR R1,=0x12345678 ;R1 = 0x12345678
;可以将任何一个32bit的数据放入寄存器
- 伪操作
指令是arm公司规定的,而伪操作是编译器规定的,不同的编译器伪操作指令不同。
(我们学的linux,用linux的编译器)