day9 专用指令

目录

状态寄存器传输指令

访问(读写)CPSR寄存器

软中断指令

协处理器指令

伪指令


状态寄存器传输指令

访问(读写)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寄存器

你可能感兴趣的:(LV.12,ARM体系结构与接口技术,我的小白学习笔记,嵌入式硬件,汇编,arm,linux,c语言)