ARMv8-M Baseline 比 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 架构一样,似乎几乎所有细节都没有改变,只是在这里和那里添加了少量内容

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

解决方法

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

ARMv6-M 提供了 16 位指令 ADCADDADRANDASRB、{{1 }}、BICBKPTBLBLXBXCMNCMPCPS,EOR,LDMIA,LDR,LDRB,LDRH,LDRSB,LDRSH,LSL,{ {1}}、LSRMOVMULMVNNOPORRPUSH、{{1 }}、REVREV16REVSHRORRSBSBCSEVSTMIA,STR,STRB,STRH,SUB,SVC,SXTB,SXTH,TST,{ {1}}、UDFUXTB

此外,还提供 32 位指令 UXTHWFEWFIYIELDBLDMB

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

  • 硬件分割指令DSBISB
  • 32 位无条件分支指令 MRS(用于扩展范围)
  • 16 位比较和分支指令 MSRSDIV
  • 用于加载常量的 32 位指令 UDIVB(作为 CBZ 的替代)
  • load-acquire/store-release 指令 CBNZMOVWMOVTLDR Rd,=...LDALDAB
  • 具有独占访问权限的加载-获取/存储-释放指令 LDAHSTLSTLBSTLHLDAEXLDAEXB
  • 独占访问说明 LDAEXHSTLEXSTLEXBSTLEXHCLREXLDREXLDREXB立>

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