打印

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

[复制链接]
2445|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条指令后变为多少了?

使用特权

评论回复
5
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)....

使用特权

评论回复
6
meter007|  楼主 | 2011-2-23 16:11 | 只看该作者
5# ayb_ice

晕 。。您讲的0 4 8 12就是十进制的普通数, 是我理解错了,呵呵...现在懂了  结贴 给分,谢谢了

使用特权

评论回复
7
meter007|  楼主 | 2011-2-23 16:20 | 只看该作者
5# ayb_ice

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

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

PC初值为n  运行完这个指令后,变为N+2了?  是吗?

使用特权

评论回复
8
ayb_ice| | 2011-2-23 16:28 | 只看该作者
LS
一般是这样的
具体的看内核手册

使用特权

评论回复
9
nevsayno| | 2011-2-23 17:10 | 只看该作者
呵呵 ayb_ice回答问题好积极啊  这分我是抢不到了:lol

使用特权

评论回复
10
batsong| | 2011-2-23 17:16 | 只看该作者
高于八位的处理器都存在align的问题,百度一下吧

使用特权

评论回复
11
sunshitao| | 2011-2-23 17:46 | 只看该作者
看看  cortex m3权威指南 上面说 是两根硬线给拉低了  不是字对齐的访问就是fault

使用特权

评论回复
12
A2000wps| | 2011-2-24 08:35 | 只看该作者
俺,我的心理素質好差

使用特权

评论回复
13
zgh3266| | 2011-2-24 09:48 | 只看该作者
别人的胳膊不容易灵活掌握啊

使用特权

评论回复
14
c126| | 2011-2-24 13:00 | 只看该作者
路过

使用特权

评论回复
15
shihun009| | 2011-2-24 14:14 | 只看该作者
:)

使用特权

评论回复
16
cyx_001| | 2011-2-24 15:18 | 只看该作者
学习中

使用特权

评论回复
17
sxx7777| | 2011-2-24 15:42 | 只看该作者
新手学习中~~~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

41

帖子

0

粉丝