ARM中专用指令(异常向量表、异常源、异常返回等)

状态寄存器传送指令

  • CPSR寄存器
    状态寄存器传送指令:访问(读写)CPSR寄存器
    @ 读CPSR
    @ MRS R1, CPSR
    @ R1 = CPSR
    @ 写CPSR
    @ MSR CPSR, #0x10 @0x10为User模式,且开启IRQ和FRQ
    @ CPSR = 0x10
    @ 在USER模式下不能随意修改CPSR,因为USER模式属于非特权模式
    @ MSR CPSR, #0xD3

软中断指令

  • ARM异常源
    在这里插入图片描述

  • ARM异常模式
    在这里插入图片描述

  • 异常向量表在这里插入图片描述

  • ARM异常响应
    在这里插入图片描述

  • 异常返回
    在这里插入图片描述

  • 异常响应代码如下:
    状态寄存器传送指令:访问(读写)CPSR寄存器
    @ 读CPSR
    @ MRS R1, CPSR
    @ R1 = CPSR
    @ 写CPSR
    @ MSR CPSR, #0x10 @0x10为User模式,且开启IRQ和FRQ
    @ CPSR = 0x10
    @ 在USER模式下不能随意修改CPSR,因为USER模式属于非特权模式
    @ MSR CPSR, #0xD3
    @ 1.5 软中断指令:触发软中断
    @ 异常向量表
    @ 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状态的恢复

协处理器指令

  • 协处理器指令:操控协处理器的指令
    @ 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寄存器

最近更新

  1. TCP协议是安全的吗?

    2024-03-10 09:44:01       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-10 09:44:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-10 09:44:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-10 09:44:01       20 阅读

热门阅读

  1. 设计模式--装饰器模式(Decorator Pattern)

    2024-03-10 09:44:01       21 阅读
  2. 洛谷P5318 【深基18.例3】查找文献

    2024-03-10 09:44:01       26 阅读
  3. 设计模式之责任链及策略模式

    2024-03-10 09:44:01       21 阅读
  4. 2024.03.04——2024.03.10 力扣练习总结及专项巩固

    2024-03-10 09:44:01       22 阅读