无锡建设机械网站,互联网品牌推广,黄岛建设局网站,网站模版开发四、状态寄存器专用指令 CPSR寄存器-N Z C V T为0时 为ARM状态
F为0时 为开启FIQ状态
I为0时 为开启IRQ状态
图1 图2
一开始都是SVC指令#xff0c;因为在操作系统启动的时候#xff0c;在做一些初始化的操作#xff0c;不允许被打断 图3
复位后CPSR寄存器为0xD3--…四、状态寄存器专用指令 CPSR寄存器-N Z C V T为0时 为ARM状态
F为0时 为开启FIQ状态
I为0时 为开启IRQ状态
图1 图2
一开始都是SVC指令因为在操作系统启动的时候在做一些初始化的操作不允许被打断 图3
复位后CPSR寄存器为0xD3----10011SVC 只有状态寄存器传送指令可以修改CPSR寄存器 图4
0x10 为user模式 图5
0001 0000转成16进制为 0x10
并且开启了FIQ IRQ 状态为ARM状态
user模式为非特权模式见图2无法向其他模式进行转变 结果见图6 图6
注1.状态寄存器传送指令在C语言中无对应语句 2.多用于操作系统内部系统调用场合应用较多
作业
编程实现通过状态寄存器传送指令将ARM处理器的模式修改成USER模式并将FIQ与IRQ使能
MSR CPSR,#0x10
五、软中断指令 图7
软中断指令会使CPU进入 SVC模式 图 8
异常向量表里一种存放 异常处理程序的一条 跳转指令 受到软中断指令后进入SVC模式cpsr寄存器- 100 10011-禁止了IRQ中断 main函数占用了 异常向量表的地址
ARM复位以后pc的值就是0x00000000执行B.
B . 表示死循环
修改为以下将main函数放在异常向量表之后
B main 表示复位以后执行主程序 软中断指定pc跳转到0x08原因见图八 428行 存储的是svc模式下的sp 432行又触发后进入SVC模式是正确的若428和429互换则sp存储的是user模式下的cpsr则错误
什么模式下用什么模式下的cpsr 跳转程序需注意压栈和出栈 异常返回 下图可直接实现1.LR的值传给PC 2.SPSR_(SVC存储的值返回给CPSR 完整代码 3900-4200 软中断在C语言中无对应语句 六、协处理器指令
主要用的两个
FPU用来处理浮点型、double型数据
cp15帮助ARM进行存储处理例。高速缓存异常向量表MMU处理物理内存和虚拟内存