如下图所示:目前在地址为0x08001500的RAM区域是有代码的,属于函数为Fun_test()。
通过执行如下图代码直接跳转到0x08001500可以正常执行Fun_test()里面的代码,但是如果直接跳到0x08001501地址处也能跳到Fun_test()函数里面,但是再次单步执行PC指针会跳到没有代码的空地址去,从而导致程序跑飞,这是为什么呢?
我又测试了其他几个地址,都是偶数地址可以,奇数地址就会跑飞,谁能解释一下?
PS:如何检查将要跳转的地址是合理的,程序需要怎么判断呢?
Susan Yang:
您可以看一下Cortex-R4F 的TRM
static.docs.arm.com/…/DDI0363E_cortexr4_r1p3_trm.pdf
The processor has two instruction set states:
ARM stateThe processor executes 32-bit, word-aligned ARM instructions in this state.
Thumb state The processor executes 32-bit and 16-bit halfword-aligned Thumb instructions in this state.
都是偶对齐