day9 专用指令

本文介绍了ARM处理器中的关键指令,包括状态寄存器传输(如MRS和MSR用于读写CPSR)、软中断指令及其异常处理流程,以及协处理器指令在内存管理和虚拟内存中的应用,如CDP、STC、LDC、MRC和MCR。此外,还提到了伪指令在编译过程中的作用。

目录

状态寄存器传输指令

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值