参考:
说明: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 |
Zuse Z3 |
22 b |
– |
w |
8 b |
w |
– |
|
1942 |
ABC |
50 b |
w |
– |
– |
– |
– |
|
1944 |
Harvard Mark I |
23 d |
w |
– |
24 b |
– |
– |
|
1946 |
ENIAC |
10 d |
w, 2w |
– |
– |
– |
– |
|
1951 |
UNIVAC I |
12 d |
w |
– |
½w |
w |
1 d |
|
1952 |
IAS machine |
40 b |
w |
– |
½w |
w |
5 b |
|
1952 |
IBM 701 |
36 b |
½w, w |
– |
½w |
½w, w |
6 b |
|
1952 |
UNIVAC 60 |
n d |
1d, ... 10d |
– |
– |
– |
2d, 3d |
|
1953 |
IBM 702 |
n d |
0d, ... 511d |
– |
5d |
d |
1 d |
|
1953 |
UNIVAC 120 |
n d |
1d, ... 10d |
– |
– |
– |
2d, 3d |
|
1954 |
IBM 650 |
10 d |
w |
– |
w |
w |
2 d |
|
1954 |
IBM 704 |
36 b |
w |
w |
w |
w |
6 b |
|
1954 |
IBM 705 |
n d |
0d, ... 255d |
– |
5d |
d |
1 d |
|
1954 |
IBM NORC |
16 d |
w |
w, 2w |
w |
w |
– |
|
1956 |
IBM 305 |
n d |
1d, ... 100d |
– |
10d |
d |
1 d |
|
1958 |
UNIVAC II |
12 d |
w |
– |
½w |
w |
1 d |
|
1958 |
SAGE |
32 b |
½w |
– |
w |
w |
6 b |
|
1958 |
Autonetics Recomp II |
40 b |
w, 79 b, 8d, 15d |
2w |
½w |
½w, w |
5 b |
|
1959 |
IBM 1401 |
n d |
1d, ... |
– |
d, 2d, 4d, 5d, 7d, 8d |
d |
1 d |
|
1959 |
IBM 1620 |
n d |
2d, ... |
– |
12d |
d |
2 d |
|
1960 |
LARC |
12 d |
w, 2w |
w, 2w |
w |
w |
2 d |
|
1960 |
IBM 1410 |
n d |
1d, ... |
– |
d, 2d, 6d, 7d, 11d, 12d |
d |
1 d |
|
1960 |
IBM 7070 |
10 d |
w |
w |
w |
w, d |
2 d |
|
1960 |
PDP-1 |
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 |
IBM 7080 |
n d |
0d, ... 255d |
– |
5d |
d |
1 d |
|
1962 |
UNIVAC III |
25 b, 6 d |
w, 2w, 3w, 4w |
– |
w |
w |
6 b |
|
1962 |
UNIVAC 1107 |
36 b |
1/6w, ⅓w, ½w, w |
w |
w |
w |
6 b |
|
1962 |
IBM 7010 |
n d |
1d, ... |
– |
d, 2d, 6d, 7d, 11d, 12d |
d |
1 d |
|
1962 |
IBM 7094 |
36 b |
w |
w, 2w |
w |
w |
6 b |
|
1963 |
Gemini Guidance Computer |
39 b |
26 b |
– |
13 b |
13 b, 26 b |
– |
|
1963 |
Apollo Guidance Computer |
15 b |
w |
– |
w, 2w |
w |
– |
|
1964 |
CDC 6600 |
60 b |
w |
w |
¼w, ½w |
w |
6 b |
|
1965 |
IBM 360 |
32 b |
½w, w, |
w, 2w |
½w, w, 1½w |
8 b |
8 b |
|
1965 |
UNIVAC 1108 |
36 b |
1/6w, ¼w, ⅓w, ½w, w, 2w |
w, 2w |
w |
w |
6 b, 9 b |
|
1965 |
PDP-8 |
12 b |
w |
– |
w |
w |
8 b |
|
1970 |
PDP-11 |
16 b |
w |
2w, 4w |
w, 2w, 3w |
8 b |
8 b |
|
1971 |
Intel 4004 |
4 b |
w, d |
– |
2w, 4w |
w |
– |
|
1972 |
Intel 8008 |
8 b |
w, 2d |
– |
w, 2w, 3w |
w |
8 b |
|
1972 |
Calcomp 900 |
9 b |
w |
– |
w, 2w |
w |
8 b |
|
1974 |
Intel 8080 |
8 b |
w, 2w, 2d |
– |
w, 2w, 3w |
w |
8 b |
|
1975 |
Cray-1 |
64 b |
24 b, w |
w |
¼w, ½w |
w |
8 b |
|
1975 |
Motorola 6800 |
8 b |
w, 2d |
– |
w, 2w, 3w |
w |
8 b |
|
1975 |
MOS Tech. 6501 |
8 b |
w, 2d |
– |
w, 2w, 3w |
w |
8 b |
|
1976 |
Zilog Z80 |
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 |
Motorola 68000 |
32 b |
¼w, ½w, w, 2d |
– |
½w, w, ... 7½w |
8 b |
8 b |
|
1982 |
Motorola 68020 |
32 b |
¼w, ½w, w, 2d |
– |
½w, w, ... 7½w |
8 b |
8 b |
|
1985 |
ARM1 |
32 b |
w |
– |
w |
8 b |
8 b |
|
1985 |
MIPS |
32 b |
¼w, ½w, w |
w, 2w |
w |
8 b |
8 b |
|
1989 |
Intel 80486 |
16 b |
½w, w, 2d |
2w, 4w, 5w, 17d |
½w, w, ... 7w |
8 b |
8 b |
|
1989 |
Motorola 68040 |
32 b |
¼w, ½w, w, 2d |
w, 2w, 2½w |
½w, w, ... 7½w |
8 b |
8 b |
|
1991 |
PowerPC |
32 b |
¼w, ½w, w |
w, 2w |
w |
8 b |
8 b |
|
2000 |
IA-64 |
64 b |
8 b, ¼w, ½w, w |
½w, w |
41 b |
8 b |
8 b |
|
2002 |
XScale |
32 b |
w |
w, 2w |
½w, w |
8 b |
8 b |
|
说明: b: 位, d: 10进制数, w: 该构架的字长, n: 变量长度(variable size) |
上一篇:ARM基础:ARM指令之MSR
下一篇:ARM所有常用指令的实例与说明
推荐阅读最新更新时间:2024-03-16 14:59