与 ARMv6-M 相比,ARMv8-M Baseline 提供了哪些新指令?

What new instructions does ARMv8-M Baseline provide over ARMv6-M?

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

不幸的是,对 ARMv8-M Architecture Reference Manual 的粗略检查并没有深入了解到底添加了什么,而且似乎没有关于与以前版本的体系结构相比发生了什么变化的有用总结。与 CPU 体系结构的新版本一样,似乎几乎所有细节都没有改变,只有一些小的添加。

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

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

ARMv6-M提供16位指令ADCADDADRANDASRBBIC, BKPT, BL, BLX, BX, CMN, CMP, CPS, EORLDMIALDRLDRBLDRHLDRSBLDRSHLSLLSR , MOV, MUL, MVN, NOP, ORR, PUSH, REV, REV16, REVSH, ROR, RSB, SBC, SEV, STMIA, STR, STRB, STRH, SUB, SVC, SXTB, SXTH, TST, UDF, UXTB, UXTH , WFE, WFI, 和 YIELD.

此外,32 位指令 BLDMBDSBISBMRSMSR 可用。

对于这些,ARMv8-M 基线添加...

  • 硬件除法指令SDIVUDIV
  • 32位无条件分支指令B(扩展范围)
  • 16 位比较和分支指令CBZCBNZ
  • 32 位指令 MOVWMOVT 用于加载常量(作为 LDR Rd, =... 的替代方法)
  • load-acquire/store-release 说明 LDALDABLDAHSTLSTLBSTLH
  • load-acquire/store-release 独占访问指令 LDAEXLDAEXBLDAEXHSTLEXSTLEXBSTLEXH
  • 独占访问指令CLREXLDREXLDREXBLDREXHSTREXSTREXBSTREXH

如果另外实施安全扩展,指令BLXNSBXNSSGTTTTTTTA , 和 TTAT 可用。