私が理解している限り、ARM Cortex-M CPU は常に Thumb 状態です。つまり、次のことを意味します。
プログラム カウンタが奇数 (LSB = 1) であることによって示される Thumb 状態。ARM 状態に戻すことは許可されていないため、偶数アドレスに分岐すると例外が発生します。
ただし、CortexM0 と M4 CPU を使用している間、PC は常に偶数です。分岐するたびに、LR は PC+1 を記録し、戻るたびに PC は LR-1 を返します。
たとえば、lr = 0x0000_01D5 の場合、
実行する
BX lr
その場合、PC は 0x0000_01D5 になるはずですが、0x0000_01D4 になります。
これは不可能ではありませんか?
どんなコメントでも大歓迎です。