在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]是什么意思呢
...全文
529 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复 1
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

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧