据我了解,ARM Cortex-M CPU 始终处于 Thumb 状态,这意味着:
程序计数器为奇数 (LSB = 1) 指示的拇指状态。跳转到偶数地址会导致异常,因为不允许切换回 ARM 状态。
但是,当我使用 CortexM0 和 M4 CPU 时,PC 总是均匀的。每次我分支,LR记录PC+1,每次我返回,PC给LR-1。
例如,如果 lr = 0x0000_01D5,
执行
BX lr
那么 PC 应该是 0x0000_01D5,而它给出的是 0x0000_01D4。
这不是不可能吗?
任何评论将不胜感激。