Cortex-M处理器指令集详解

ARM处理器一直支持两种形式上想对独立的指令集,分别是:

32位的ARM指令集。处理器使用ARM指令集时处于ARM状态

16位的Thumb指令集。处理器使用Thumb指令集时处于Thumb状态。

这两种指令集对应了两种处理器执行状态。在程序的执行过程中,处理器可以动态地在两种执行状态之中切换。实际上,Thumb指令集在功能上是ARM指令集的一个子集,但它能带来更高的代码密度,给目标代码减肥。

Thumb-2是2003年诞生的,它是Thumb的超集,它支持both 16位和32位指令。

Thumb-2是一个突破性的指令集。Thumb-2是16位Thumb指令集的一个超集,在Thumb-2中,16位指令首次与32位指令并存,结果在Thumb状态下可以做的事情一下子丰富了许多,同样工作需要的指令周期数也明显下降。

Cortex-M处理器指令集详解_第1张图片

                                                                      Thumb-2指令集与Thumb指令集的关系

在支持了both 16位和32位指令之后,就无需烦心地把处理器状态在Thumb和ARM之间来回的切换了。

所有的Cortex-M处理器都支持Thumb指令集,不支持ARM指令集。但不同的Cortex-M处理器支持不同的Thumb 指令集的子集。

Cortex-M0/M0+/M1处理器基于ARMv6-M架构。这是一个只支持56条指令的小指令集,大部分指令是16位指令,但是,此类处理器中的寄存器和处理的数据长度是32位的。对于大多数简单的I/O控制任务和普通的数据处理,这些指令已经足够了。这么小的指令集可以用很少的电路门数来实现处理器设计,Cortex-M0 和 Cortex-M0+最小配置仅仅12K门。然而,其中的很多指令无法使用高位寄存器(R8 到R12), 并且生成立即数的能力有限。这是平衡了超低功耗和性能需求的结果。

Cortex-M3处理器是基于ARMv7-M架构的处理器,支持更丰富的指令集,包括许多32位指令,这些指令可以高效的使用高位寄存器。

Cortex-M4在很多地方和Cortex-M3相同:流水线,编程模型。Cortex-M4支持Cortex-M3的所有功能,并额外支持各种面向DSP应用的指令,像SIMD, 饱和运算指令,一系列单周期MAC指令(Cortex-M3只支持有限条MAC指令,并且是多周期执行的),和可选的单精度浮点运算指令。

还有其他的指令集就不一一说了。

下面是具体的指令:

Cortex-M处理器指令集详解_第2张图片

Cortex-M处理器指令集详解_第3张图片

Cortex-M处理器指令集详解_第4张图片

Cortex-M处理器指令集详解_第5张图片

Cortex-M处理器指令集详解_第6张图片

Cortex-M处理器指令集详解_第7张图片 

Cortex-M处理器指令集详解_第8张图片

你可能感兴趣的:(Cortex-M处理器指令集详解)