据我所知,ARM Cortex-M处理器总是处于Thumb状态,这意味着:
当程序计数器为奇数时(LSB=1),表示处于Thumb状态。跳转到偶数地址会引发异常,因为不允许切换回ARM状态。
然而,在使用CortexM0和M4处理器时,PC始终为偶数。每次分支时,LR记录PC + 1,每次返回时,PC给出LR-1。
例如,如果lr = 0x0000_01D5,
执行
BX lr 则PC应该为0x0000_01D5,但实际上它给出的是0x0000_01D4。
这不是不可能吗?
感谢您的任何评论。
当程序计数器为奇数时(LSB=1),表示处于Thumb状态。跳转到偶数地址会引发异常,因为不允许切换回ARM状态。
然而,在使用CortexM0和M4处理器时,PC始终为偶数。每次分支时,LR记录PC + 1,每次返回时,PC给出LR-1。
例如,如果lr = 0x0000_01D5,
执行
BX lr 则PC应该为0x0000_01D5,但实际上它给出的是0x0000_01D4。
这不是不可能吗?
感谢您的任何评论。