|

楼主 |
发表于 2024-9-27 17:35:10
|
显示全部楼层
1.意思就是,其实写PC指针时,LSB都必须保持是1,指示是Thumb状态,如果PC指针被意外修改。写入的是一个偶数地址,就会进HardFault(原因是试图切换到ARM状态)。
2.“In high-level programming languages(includeing C,C++),the setting of LSB in branch targets is handled by the compiler automatically”,意思是我们平时在用C编程时,其实并没有过多关注过这个LSB的问题,都是编译器帮我们自动处理好了。如果我有一个函数是的地址是放在0x100的,但是最后汇编指令写入到PC指针时,其实是0x101?在启动文件xxx.s中,有一条指令是THUMB,网上的解释是表示后面的指令是THUMB指令集。意思是.s汇编文件,编译器不会自动帮我们处理。所以在内存中Vector的地址都是奇数。放入到PC指针才能是正确的?
我这两点理解是否正确呢? |
|