565715470 发表于 2014-3-15 10:13:36

关于《ARM cortex-m3权威指南》里面的问题

3.1.5 程序计数器R15 那一节中下面有一段话:
“如果向PC中写数据,就会引起一次程序的分支(但是不更新LR寄存器)。CM3中的指令至少是半字节对齐的,所以PC的LSB总是读回0。当然,在分支时,无论是直接写PC的值还是使用分支指令,都必须保证加载到PC的数值是奇数(既LSB=1),用以表明这是在Thumb状态下执行。倘若写入了0,则视为企图转入ARM模式,CM3将产生一个fault异常。”

为什么读PC时LSB=0,当加载PC时却要保证LSB=1.不明白,希望高手们帮帮我,谢谢!

jisaowang2 发表于 2014-3-15 13:04:35

这是历史遗留问题。。。。当年为了区分arm状态和thumb状态而搞出来的 为了移植兼容性而保留了下来,虽然现在cortex m没有arm指令状态

565715470 发表于 2014-3-15 16:19:51

jisaowang2 发表于 2014-3-15 13:04
这是历史遗留问题。。。。当年为了区分arm状态和thumb状态而搞出来的 为了移植兼容性而保留了下来,虽然现 ...

那为什么读时lsb=0,而写时要lsb=1啊?
当写入lsb=1后在读lsb不应该是1吗?

liujingwei 发表于 2014-3-15 21:20:25

2楼正解

565715470 发表于 2014-3-16 00:17:43

liujingwei 发表于 2014-3-15 21:20
2楼正解

那为什么读时lsb=0,而写时要lsb=1啊?
当写入lsb=1后在读lsb不应该是1吗?

huangxiaowei 发表于 2014-4-16 09:15:49

顶一下
页: [1]
查看完整版本: 关于《ARM cortex-m3权威指南》里面的问题