在ARM文章经常看到[1:0]和[31:2]这是什么意思啊.

yanjinbin0 2011-02-25 05:08:12
比如有这样一句话:
寄存器R15用作程序计数器(PC)。在ARM状态下,位[1:0]为0,位[31:2]用于保存PC

[1:0]为0,是什么意思呢(猜测:是32位中的0~1位应该设置为0吗???)
[31:2]是什么意思呢
...全文
262 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hawk198 2011-02-26
受教了,原来是这样的啊,我以为只有0:31这样才能这样表示
回复
bluejays 2011-02-26
如果一个十进制数是100(10的平方)的倍数,显然他(十进制)的最低两位都是0。
同样的
如果一个二进制数是4(2的平方)的倍数,那么他(二进制)的最低两位都是0。

二进制、十六进制玩多了,这些就很自然了。
回复
yanjinbin0 2011-02-26
楼上的,有个疑问,
你怎么根据PC值是4的倍数,而推断出最底两位肯定为0呢.

看到某书上说:
寄存器R15用作程序计数器(PC)。在ARM状态下,位[1:0]为0,位[31:2]用于保存PC.

没讲这两位是做什么用的。
回复
bluejays 2011-02-25
PC是32位的(31:0)。ARM状态下,指令是32位的,指令地址都是4字节对齐,所以PC值肯定是4的倍数,所以最低两位(位[1:0])肯定为0,前面的30位位[31:2]用于保存PC
如果是thumb状态,指令是16位的,指令地址是2字节对齐。

回复
李迟 2011-02-25
楼主说对了。这些形式经常在芯片手册中看到。
回复
哈皮歪詩 2011-02-25
You are right.

[31:2], bit 31 down to bit 2

[1:0] the lower two bits
回复
相关推荐
发帖
Linux_Kernel
创建于2007-08-27

4152

社区成员

Linux/Unix社区 内核源代码研究区
申请成为版主
帖子事件
创建了帖子
2011-02-25 05:08
社区公告
暂无公告