Thumb-2真不愧是一个突破性的指令集。它强大,它易用,它轻佻,它高效。 Thumb-2是16位Thumb指令集的一个超集,在Thumb-2中,16位指令首次与32位指令并存,结果在Thumb状态下可以做的事情一下子丰富了许多,同样工作需要的指令周期数也明显下降。
从图中可见,Cortex-M3勇敢地拒绝了32位ARM指令集,却把自己的处理能力以身相许般地全托给Thumb-2指令集。这可能有些令人意外,但事实上这却见证了Cortex-M3的用情专一:在内核水平上,就已经为适应单片机和小内存器件而抉择、取舍过了。但她没有嫁错郎, 因为Thumb-2完全胜任在这个领域挑大梁。不过,这也意味着Cortex-M3作为新生代处理器,不是向后兼容的。因此,为ARM7写的ARM汇编语言程序不能直接移植到CM3上来。不过, CM3支持绝大多数传统的Thumb指令,因此用Thumb指令写的汇编程序就从善如流了。
在支持了both 16位和32位指令之后,就无需烦心地把处理器状态在Thumb和ARM之间来回的切换了。这种事在ARM7和ARM9是司空见惯的,尤其是在使用大型条件嵌套,以及执行复杂运算的时候,能精妙地移形换影于不同状态之间,那可是当年要成为大虾的基本功。
Cortex-M3是ARMv7架构的掌上明珠。和曾经红透整个业界的老一辈ARM7相比,Cortex-M3则是新生代的偶像,处处闪耀着青春的光芒活力。比如,硬件除法器被带到CM3中;乘法方面,也有好几条新指令闪亮登场,用于提升data-crunching的性能。CM3的出现,还在ARM处理器中破天荒地支持了“非对齐数据访问支持”。