ARMv8-M Baseline 相对于 ARMv6-M 提供了哪些新指令?

fuz*_*fuz 5 assembly arm armv8

2016年,ARM推出了ARMv8-M架构,作为流行的ARMv6-M(Cortex M0/M0+/M1)和ARMv7-M(Cortex M3/M4/M7)架构的升级。ARMv8-M 架构再次分为基线配置文件(被视为 ARMv6-M 架构的延续)和主线配置文件(被视为 ARMv7-M 架构的延续)。

不幸的是,粗略地检查ARMv8-M 架构参考手册并没有深入了解到底添加了什么,并且似乎没有关于与该架构的先前版本相比发生了什么变化的有用总结。与往常一样,新版本的 CPU 架构似乎几乎所有细节都没有改变,只是到处添加了少量内容。

与 ARMv6-M 相比,ARMv8-M Baseline 提供了哪些附加指令和指令变体?

Fra*_*ant 5

标题为Cortex-M for Beginners 的ARM 文档可能会提供您正在寻找的信息,更具体地说,在第 6 页和第 7 页。

ARMv6-M提供16 位指令ADC, ADD, ADR, AND, ASR, B, BIC, BKPT, BL, BLX, BX, CMN, CMP, CPS, EOR, LDMIA, LDR, LDRB, LDRH, , , , , , , , , , , , , , , , , , , , , , , , ,,,,,,,, 和。LDRSBLDRSHLSLLSRMOVMULMVNNOPORRPUSHREVREV16REVSHRORRSBSBCSEVSTMIASTRSTRBSTRHSUBSVCSXTBSXTHTSTUDFUXTBUXTHWFEWFIYIELD

此外,还提供32 位指令BLDMBDSBISBMRS和。MSR

除此之外,ARMv8-M 基线还添加了...

  • 硬件划分指令SDIVUDIV
  • 32 位无条件分支指令B(用于扩展范围)
  • 16 位比较和分支指令CBZ以及CBNZ
  • 32 位指令MOVWMOVT用于加载常量(作为 的替代LDR Rd, =...
  • 加载-获取/存储-释放指令LDA, LDAB, LDAH, STL, STLB, 和STLH
  • 具有独占访问权限的加载-获取/存储-释放指令LDAEX, LDAEXB, LDAEXH, STLEX, STLEXB, 和STLEXH
  • 独占访问指令CLREX, LDREX, LDREXB, LDREXH, STREX, STREXB, 和STREXH

如果另外实施了安全扩展,则指令BLXNSBXNSSGTTTTTTTATTAT可用。