/******************************************************************************************************************
参考:
说明:ARM基础:ARM中“字”的长度。
******************************************************************************************************************/
(这里不讨论一个“汉字”代表两个“字节”的问题,这个差点都干扰我了都)
在学习汇编时用到了LDRH R2,[R1] ;将存储器地址为R1的半字数据读入寄存器R2,并将R2的高16位清零。 以前没有听过字这个这个概念,就很纠结。就引起了我弄清“字”的长度的好奇心。字到底有多少个字节,这是一个很晦涩的问题,都特别是这样的解释:
“在计算机领域, 对于某种特定的计算机设计而言,字是用于表示其自然的数据单位的术语。在这个特定计算机中,字是其用来一次性处理事务的一个固定长度的位(bit)组。一个字的位数(即字长)是计算机系统结构中的一个重要特性。”
就是不明白,不过上边的LDRH R2,[R1]实验结果是R1指向的内存地址的16bit都给了R2,说明“字”是32位的。但是当我用Win7上的计算器时却发现了另一种情况。如下图可见,一个“字”,却给出了16bit。
这更激怒我了,非要搞明白不可了。在google时在wiki上找到了答案,这个“字”并不是固定的,对于X86来说是16位,对于ARM来说是32位。(链接这里)
对各个架构都做了字长的统计,转来看看。
这就说明谁都没有错了,Win7自带的计算器是按照x86的标准来的。要想用这个计算器来计算ARM中的字,要用这里的“双字”来代表ARM中的一个“字”。
字长表
年份 | 计算机 | 字长 | 整数 | 浮点数 | 长度 | 编址单位 | 字符 | |
1941 | 22 b | – | w | 8 b | w | – | ||
1942 | 50 b | w | – | – | – | – | ||
1944 | 23 d | w | – | 24 b | – | – | ||
1946 | 10 d | w, 2w | – | – | – | – | ||
1951 | 12 d | w | – | ½w | w | 1 d | ||
1952 | 40 b | w | – | ½w | w | 5 b | ||
1952 | 36 b | ½w, w | – | ½w | ½w, w | 6 b | ||
1952 | n d | 1d, ... 10d | – | – | – | 2d, 3d | ||
1953 | n d | 0d, ... 511d | – | 5d | d | 1 d | ||
1953 | n d | 1d, ... 10d | – | – | – | 2d, 3d | ||
1954 | 10 d | w | – | w | w | 2 d | ||
1954 | 36 b | w | w | w | w | 6 b | ||
1954 | n d | 0d, ... 255d | – | 5d | d | 1 d | ||
1954 | 16 d | w | w, 2w | w | w | – | ||
1956 | n d | 1d, ... 100d | – | 10d | d | 1 d | ||
1958 | 12 d | w | – | ½w | w | 1 d | ||
1958 | 32 b | ½w | – | w | w | 6 b | ||
1958 | 40 b | w, 79 b, 8d, 15d | 2w | ½w | ½w, w | 5 b | ||
1959 | n d | 1d, ... | – | d, 2d, 4d, 5d, 7d, 8d | d | 1 d | ||
1959 | n d | 2d, ... | – | 12d | d | 2 d | ||
1960 | 12 d | w, 2w | w, 2w | w | w | 2 d | ||
1960 | n d | 1d, ... | – | d, 2d, 6d, 7d, 11d, 12d | d | 1 d | ||
1960 | 10 d | w | w | w | w, d | 2 d | ||
1960 | 18 b | w | – | w | w | 6 b | ||
1961 | IBM 7030 | 64 b | 1b, ... 64b, | w | ½w, w | b, ½w, w | 1 b, ... 8 b | |
1961 | n d | 0d, ... 255d | – | 5d | d | 1 d | ||
1962 | 25 b, 6 d | w, 2w, 3w, 4w | – | w | w | 6 b | ||
1962 | 36 b | 1/6w, ⅓w, ½w, w | w | w | w | 6 b | ||
1962 | n d | 1d, ... | – | d, 2d, 6d, 7d, 11d, 12d | d | 1 d | ||
1962 | 36 b | w | w, 2w | w | w | 6 b | ||
1963 | 39 b | 26 b | – | 13 b | 13 b, 26 b | – | ||
1963 | 15 b | w | – | w, 2w | w | – | ||
1964 | 60 b | w | w | ¼w, ½w | w | 6 b | ||
1965 | 32 b | ½w, w, | w, 2w | ½w, w, 1½w | 8 b | 8 b | ||
1965 | 36 b | 1/6w, ¼w, ⅓w, ½w, w, 2w | w, 2w | w | w | 6 b, 9 b | ||
1965 | 12 b | w | – | w | w | 8 b | ||
1970 | 16 b | w | 2w, 4w | w, 2w, 3w | 8 b | 8 b | ||
1971 | 4 b | w, d | – | 2w, 4w | w | – | ||
1972 | 8 b | w, 2d | – | w, 2w, 3w | w | 8 b | ||
1972 | 9 b | w | – | w, 2w | w | 8 b | ||
1974 | 8 b | w, 2w, 2d | – | w, 2w, 3w | w | 8 b | ||
1975 | 64 b | 24 b, w | w | ¼w, ½w | w | 8 b | ||
1975 | 8 b | w, 2d | – | w, 2w, 3w | w | 8 b | ||
1975 | 8 b | w, 2d | – | w, 2w, 3w | w | 8 b | ||
1976 | 8 b | w, 2w, 2d | – | w, 2w, 3w, 4w, 5w | w | 8 b | ||
1978 | Intel 8086 | 16 b | ½w, w, 2d | – | ½w, w, ... 7w | 8 b | 8 b | |
1978 | VAX-11/780 | 32 b | ¼w, ½w, w, 1d, ... 31d, 1b, ... 32b | w, 2w | ¼w, ... 14¼w | 8 b | 8 b | |
1979 | 32 b | ¼w, ½w, w, 2d | – | ½w, w, ... 7½w | 8 b | 8 b | ||
1982 | 32 b | ¼w, ½w, w, 2d | – | ½w, w, ... 7½w | 8 b | 8 b | ||
1985 | 32 b | w | – | w | 8 b | 8 b | ||
1985 | 32 b | ¼w, ½w, w | w, 2w | w | 8 b | 8 b | ||
1989 | 16 b | ½w, w, 2d | 2w, 4w, 5w, 17d | ½w, w, ... 7w | 8 b | 8 b | ||
1989 | 32 b | ¼w, ½w, w, 2d | w, 2w, 2½w | ½w, w, ... 7½w | 8 b | 8 b | ||
1991 | 32 b | ¼w, ½w, w | w, 2w | w | 8 b | 8 b | ||
2000 | 64 b | 8 b, ¼w, ½w, w | ½w, w | 41 b | 8 b | 8 b | ||
2002 | 32 b | w | w, 2w | ½w, w | 8 b | 8 b | ||
说明: b: 位, d: 10进制数, w: 该构架的字长, n: 变量长度(variable size) |