Cortex-M3:为什么 Cortex-M3 只需要 THUMB 指令集?

📅 发布时间:2026/7/30 4:13:00
Cortex-M3:为什么 Cortex-M3 只需要 THUMB 指令集? 难度:★★本文首发于我的嵌入式技术号「OneChan」,未经授权禁止转载。如果你看过 ARM7 或者 ARM9 的启动文件,会发现一个 Cortex-M3 启动文件里没有的东西:CODE32 ; 切换到 ARM 状态 ADDS R0, R0, R0 BX R1 ; 切换到 Thumb 状态老的 ARM 芯片,程序经常在 ARM 状态和 Thumb 状态之间切换。两种指令集并存,各干各的活。但到了 Cortex-M3,这一切全消失了。CODE32没了。BX切换状态的功能虽然指令还在,但 LSB 必须永远是 1,因为切到 ARM 状态就立刻 HardFault。ARM 把用了二十年的 ARM 指令集,从 Cortex-M 系列里直接删掉了。这不是一个轻松的决定。ARM 指令集曾经是 ARM 架构的旗舰——32 位定长、功能完备、性能强劲。说砍就砍,凭什么?今天这篇文章,就来回答这个问题。答案的核心,藏在Thumb-2 技术的诞生、微控制器的成本边界,以及指令集融合的终极逻辑里。一、ARM 指令集的辉煌与代价