仗剑天涯 发表于 2013-4-30 01:13:09

一个简单的基础问题

在嵌入式课上,书中讲到ARM指令的第二个操作数可以是常数,但是该常数要对应”8位位图“,也就是说是由一个8位的常数经过循环移位偶数位得来的,这是什么意思??
书里面还列举了几个例子,比如0x3FC(0xFF<<2),200(0xC8)都是合法的常量,但是0x1FE,0xFFFF都是非法的,这怎么一下看出来?谢谢了~~~

仗剑天涯 发表于 2013-4-30 20:23:10

自顶一下,求人解答~~~

twitter 发表于 2013-4-30 20:55:40

用windows自带的计算器转成二进制看。一般熟练后,应该是要能背得出二进制和十六进制值的对应的。

仗剑天涯 发表于 2013-5-2 12:55:35

twitter 发表于 2013-4-30 20:55 static/image/common/back.gif
用windows自带的计算器转成二进制看。一般熟练后,应该是要能背得出二进制和十六进制值的对应的。 ...

在ARM指令里,为什么要要求第二个操作数是这样的呢??我们课上讲的是32位的ARM7,是因为字长是32位4字节,所以循环移位偶数位,也就是4的倍数吗??

twitter 发表于 2013-5-2 13:26:29

http://www.alivepea.me/prog/RISCimm/

看这个文章,是ARM规定的编码方式,文章里没提到的前20位是指令码、条件码、源和目标寄存器等部分,



所以留给op2的只有后12位,这种移位方式才能让这12位数值覆盖32位范围。


error_dan 发表于 2013-5-2 13:43:09

http://wenku.baidu.com/view/3f25f3dfa58da0116c17490a.html

仗剑天涯 发表于 2013-5-4 23:15:43

error_dan 发表于 2013-5-2 13:43 static/image/common/back.gif
http://wenku.baidu.com/view/3f25f3dfa58da0116c17490a.html

不好意思,来晚了,谢谢您~~~

仗剑天涯 发表于 2013-5-4 23:16:08

twitter 发表于 2013-5-2 13:26 static/image/common/back.gif
http://www.alivepea.me/prog/RISCimm/

看这个文章,是ARM规定的编码方式,文章里没提到的前20位是指令码 ...

嗯,了解了,谢谢您~~~
页: [1]
查看完整版本: 一个简单的基础问题