ARM备考知识梳理

本文仅限嵌入式系统备考知识整理,如有疏忽欢迎留言😂希望大家都可以取得好成绩。

ARM 体系和指令集


ARM体系结构


  • ARM处理器 支持16/32双指令集
    • 处理器7种工作模式(用户 系统 快中断(FIQ) 中断(IRQ) 管理 中止 未定义)
    • 寄存器(31个通用寄存器(R0-R7 R8-R12(FIQ) R13(堆栈+5异常) R14(链接+5异常)) R15(PC),6个状态寄存器)
    • R14使用:子程序调用,程序地址写入R14,跳转执行,返回转到R14所在指令的下一条执行
    • R15的使用:最低两位为0
  • ARM 指令集32位
  • Thumb 扩充的16位指令集
  • DSP 扩充的算术运算指令集
  • v1(基本数据处理+软中断) -> v2(协处理器+线程同步) -> v3(32位寻址+64位乘法器) -> v4(半字load+store) -> v5(ARM+Thumb)
  • 流水线:ARM7(取指 译码 执行) -> ARM9(+访存 写结果)…
  • 内存:Cache+紧耦合器实现可预测实时响应
  • 存储:无保护 / MPU(区域性的访问权限控制) / MMU(虚拟->物理+访问权限控制)
    • 存储器模式:大端 / 小端
  • 协处理器:辅助处理器 扩展指令 译码阶段确定
  • 两个特例:
    • LDR互锁(写后读,载数延迟?)解决方法:指令编排
    • LDM互锁:多等一拍
  • 异常处理:同步异常(内部事件) 异步异常(外部信号)
    • 中断 陷井 故障 中止
    • CPSR -> SPSR 设置CPSR(禁止新中断IRQ/FIQ) 保存地址(LR) 设置PC异常向量
    • 返回:SPSR -> CPSR 恢复PC(LR) 恢复中断
    • 中断(软中断 硬中断)
      • 软中断 用R14_svc恢复PC
    • 中止(存储器访问异常)
      • 最后都必须重试中止指令 恢复PC到R14_abt - 8
      • 数据终止 指令相关 恢复基址(LDR)或者取消所有执行(SWP)
      • 预取终止 恢复PC CPSR
    • 其他自定义异常
      • 用MOVS R14_svc恢复PC CPSR

ARM 指令集整理(60分✊✊✊)


  • 指令长度 16/32
  • load-store结构
  • 数据处理 数据传送 控制 中断 状态寄存器 协处理器
  • 数据处理指令:
    • 运算指令:ADD ADC SUB SBC MUL MLA(mul+add)
    • 按位逻辑:AND ORR EOR BIC
    • 寄存器移动:MOV MOVEQ MOVGT
    • 桶形移位器:LSL LSR
    • 比较指令:CMP GT LS
      • 条件码 N(neg)Z(zero)V(overflow)C(less than?)
  • 数据传送指令:
    • 单数据传送 LDR STR
    • 多数据传送指令 LDM(tgt地址的数据到src的寄存器) STM(src寄存器的数据到tgt的地址): cmd{IA IB DA DB} tgt{!}, {op1, op2…}
    • 堆栈操作传送指令 LDM/STM + {FA FD EA ED}
    • 数据交换 SWP{cond} ex1, ex2, [address] # [address] -> ex1; ex2->[address]
    • SWI
  • 控制和分支指令:
    • B BEQ BNE BLT BGT
  • 状态寄存器访问指令:
    • MRS tgt, <psr(CPSR/SPSR)> / MSR <psr[_fields]>, src
  • 协处理器指令:
    • 16个协处理器
    • 别看这个了 没有奇迹了
  • 伪指令:
    • 遇到这种就写 #define…🐶

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值