目录
状态寄存器传输指令
访问(读写)CPSR寄存器
读CPSR
MRS R1, CPSR
R1 = CPSR
写CPSR
MSR CPSR, #0x10
CPSR = 0x10
在USER模式下不能随意修改CPSR,因为USER模式属于非特权模式
软中断指令
异常向量表
B MAIN
B .
B SWI_HANDLER
B .
B .
B .
B .
B .
应用程序
MAIN:
MOV SP, #0x40000020
// 初始化SVC模式下的栈指针
MSR CPSR, #0x10
// 切换成USER模式,开启FIQ、IRQ
MOV R1, #1
MOV R2, #2
SWI #1
// 触发软中断异常
ADD R3, R2, R1
B STOP
// 异常处理程序
SWI_HANDLER:
STMFD SP!,{R1,R2,LR}
// 压栈保护现场
MOV R1, #10
MOV R2, #20
SUB R3, R2, R1
LDMFD SP!,{R1,R2,PC}^
// 出栈恢复现场
// 将压入到栈中的LR(返回地址)出栈给PC,实现程序的返回
// ‘^’表示出栈的同时将SPSR的值传递给CPSR,实现CPU状态的恢复
协处理器指令
MMU是内存管理单元的缩写,是一种硬件设备,能将虚拟地址翻译成物理地址,实现虚拟内存的功能。它通过管理页表来完成虚拟地址转换,确保进程和操作系统的内存访问安全和高效。
虚拟内存的优点包括:
1. 提高了进程的内存使用效率,使进程能够使用更多的内存空间;
2. 保护了系统的稳定性,防止内存溢出和越界访问等错误;
3. 方便了进程之间的内存隔离,使得进程之间的内存空间相互独立,保障了数据的安全性。
协处理器指令分类:
1.协处理器数据运算指令
CDP
2.协处理器存储器访问指令
STC 将协处理器中的数据写入到存储器
LDC 将存储器中的数据读取到协处理器
3.协处理器寄存器传送指令
MRC 将协处理器中寄存器中的数据传送到ARM处理器中的寄存器
MCR 将ARM处理器中寄存器中的数据传送到协处理器中的寄存器
伪指令
伪指令:不会生成代码,只是在编译之前告诉编译器怎么编译
@ 空指令
NOP
@ 指令
LDR R1, [R2]
@ 将R2指向的内存空间中的数据读取到R1寄存器
@ 伪指令
LDR R1, =0x12345678
R1 = 0x12345678
@ LDR伪指令可以将任意一个32位的数据放到一个寄存器
LDR R1, =STOP
@ 将STOP表示的地址写入R1寄存器
LDR R1, STOP
@ 将STOP地址中的内容写入R1寄存器
本文介绍了ARM处理器中的关键指令,包括状态寄存器传输(如MRS和MSR用于读写CPSR)、软中断指令及其异常处理流程,以及协处理器指令在内存管理和虚拟内存中的应用,如CDP、STC、LDC、MRC和MCR。此外,还提到了伪指令在编译过程中的作用。


被折叠的 条评论
为什么被折叠?



