在啃书,碰到个问题,这句话什么意思

[复制链接]
3746|16
 楼主| meter007 发表于 2011-2-23 15:14 | 显示全部楼层 |阅读模式
“由于ARM采用了流水线机制,当正确读取了PC的值时,该值为当前指令地址值加8个字节,也就是说,对于ARM指令集来说,PC指向当前指令的下两条指令的地址,由于ARM指令是字对齐的,PC值的第0位和第1位总为0 ?”


特别是红色标出来的部分,谁能解释下下?
ayb_ice 发表于 2011-2-23 15:29 | 显示全部楼层
由于ARM的指令长度总是4字节
那么PC只可能=0,4,8,12,那么位0和位1当然总是0
china_fog 发表于 2011-2-23 15:32 | 显示全部楼层
就是总线长度决定了地址的最后2位如楼上所说的,总是0.
 楼主| meter007 发表于 2011-2-23 15:47 | 显示全部楼层
2# ayb_ice

有点理解不了
PC不是32位的吗?   能详细点吗? 比如PC从“0000000000....”应该是32个0吧..运行1条指令后变为多少了?
ayb_ice 发表于 2011-2-23 16:05 | 显示全部楼层
LS
你的理解能力也太差了吧
都说了ARM的所有ARM指令都是4个字节长,PC复位为0,假设程序完全顺序执行,那么PC的值依次为4,8,12,16...
你说位0和位1的值是否为0
如果程序故意控制PC跳转到某个位0和位1不为0的PC值,那么不同版本的ARM内核处理是不同的,有些不可预料,有些忽略(强制为0)....
 楼主| meter007 发表于 2011-2-23 16:11 | 显示全部楼层
5# ayb_ice

晕 。。您讲的0 4 8 12就是十进制的普通数, 是我理解错了,呵呵...现在懂了  结贴 给分,谢谢了
 楼主| meter007 发表于 2011-2-23 16:20 | 显示全部楼层
5# ayb_ice

那个...ayb_ice大哥,再问下下,

如果8位单片机的某个指令长度为2字节

PC初值为n  运行完这个指令后,变为N+2了?  是吗?
ayb_ice 发表于 2011-2-23 16:28 | 显示全部楼层
LS
一般是这样的
具体的看内核手册
nevsayno 发表于 2011-2-23 17:10 | 显示全部楼层
呵呵 ayb_ice回答问题好积极啊  这分我是抢不到了:lol
batsong 发表于 2011-2-23 17:16 | 显示全部楼层
高于八位的处理器都存在align的问题,百度一下吧
sunshitao 发表于 2011-2-23 17:46 | 显示全部楼层
看看  cortex m3权威指南 上面说 是两根硬线给拉低了  不是字对齐的访问就是fault
A2000wps 发表于 2011-2-24 08:35 | 显示全部楼层
俺,我的心理素質好差
zgh3266 发表于 2011-2-24 09:48 | 显示全部楼层
别人的胳膊不容易灵活掌握啊
c126 发表于 2011-2-24 13:00 | 显示全部楼层
shihun009 发表于 2011-2-24 14:14 | 显示全部楼层
cyx_001 发表于 2011-2-24 15:18 | 显示全部楼层
学习中
sxx7777 发表于 2011-2-24 15:42 | 显示全部楼层
新手学习中~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

41

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部