ARM基础:ARM中“字”的长度
参考:
说明:ARM基础:ARM中“字”的长度。
/
(这里不讨论一个“汉字”代表两个“字节”的问题,这个差点都干扰我了都)
在学习汇编时用到了LDRHR2,[R1] ;将存储器地址为R1的半字数据读入寄存器R2,并将R2的高16位清零。以前没有听过字这个这个概念,就很纠结。就引起了我弄清“字”的长度的好奇心。字到底有多少个字节,这是一个很晦涩的问题,都特别是这样的解释:
“在计算机领域,对于某种特定的计算机设计而言,字是用于表示其自然的数据单位的术语。在这个特定计算机中,字是其用来一次性处理事务的一个固定长度的位(bit)组。一个字的位数(即字长)是计算机系统结构中的一个重要特性。”
就是不明白,不过上边的LDRHR2,[R1]实验结果是R1指向的内存地址的16bit都给了R2,说明“字”是32位的。但是当我用Win7上的计算器时却发现了另一种情况。如下图可见,一个“字”,却给出了16bit。
这更激怒我了,非要搞明白不可了。在google时在wiki上找到了答案,这个“字”并不是固定的,对于X86来说是16位,对于ARM来说是32位。(链接这里)
对各个架构都做了字长的统计,转来看看。
这就说明谁都没有错了,Win7自带的计算器是按照x86的标准来的。要想用这个计算器来计算ARM中的字,要用这里的“双字”来代表ARM中的一个“字”。
字长表
年份 | 计算机 | 字长 | 整数 | 浮点数 | 长度 | 编址单位 | 字符 |
1941 | ZuseZ3 | 22b | – | w | 8b | w | – |
1942 | ABC | 50b | w | – | – | – | – |
1944 | HarvardMarkI | 23d | w | – | 24b | – | – |
1946 | ENIAC | 10d | w,2w | – | – | – | – |
1951 | UNIVACI | 12d | w | – | ½w | w | 1d |
1952 | IASmachine | 40b | w | – | ½w | w | 5b |
1952 | IBM701 | 36b | ½w,w | – | ½w | ½w,w | 6b |
1952 | UNIVAC60 | nd | 1d,...10d | – | – | – | 2d,3d |
1953 | IBM702 | nd | 0d,...511d | – | 5d | d | 1d |
1953 | UNIVAC120 | nd | 1d,...10d | – | – | – | 2d,3d |
1954 | IBM650 | 10d | w | – | w | w | 2d |
1954 | IBM704 | 36b | w | w | w | w | 6b |
1954 | IBM705 | nd | 0d,...255d | – | 5d | d | 1d |
1954 | IBMNORC | 16d | w | w,2w | w | w | – |
1956 | IBM305 | nd | 1d,...100d | – | 10d | d | 1d |
1958 | UNIVACII | 12d | w | – | ½w | w | 1d |
1958 | SAGE | 32b | ½w | – | w | w | 6b |
1958 | AutoneticsRecompII | 40b | w,79b,8d,15d | 2w | ½w | ½w,w | 5b |
1959 | IBM1401 | nd | 1d,... | – | d,2d,4d,5d,7d,8d | d | 1d |
1959 | IBM1620 | nd | 2d,... | – | 12d | d | 2d |
1960 | LARC | 12d | w,2w | w,2w | w | w | 2d |
1960 | IBM1410 | nd | 1d,... | – | d,2d,6d,7d,11d,12d | d | 1d |
1960 | IBM7070 | 10d | w | w | w | w,d | 2d |
1960 | PDP-1 | 18b | w | – | w | w | 6b |
1961 | IBM7030 | 64b | 1b,...64b, | w | ½w,w | b,½w,w | 1b,...8b |
1961 | IBM7080 | nd | 0d,...255d | – | 5d | d | 1d |
1962 | UNIVACIII | 25b,6d | w,2w,3w,4w | – | w | w | 6b |
1962 | UNIVAC1107 | 36b | 1/6w,?w,½w,w | w | w | w | 6b |
1962 | IBM7010 | nd | 1d,... | – | d,2d,6d,7d,11d,12d | d | 1d |
1962 | IBM7094 | 36b | w | w,2w | w | w | 6b |
1963 | GeminiGuidanceComputer | 39b | 26b | – | 13b | 13b,26b | – |
1963 | ApolloGuidanceComputer | 15b | w | – | w,2w | w | – |
1964 | CDC6600 | 60b | w | w | ¼w,½w | w | 6b |
1965 | IBM360 | 32b | ½w,w, | w,2w | ½w,w,1½w | 8b | 8b |
1965 | UNIVAC1108 | 36b | 1/6w,¼w,?w,½w,w,2w | w,2w | w | w | 6b,9b |
1965 | PDP-8 | 12b | w | – | w | w | 8b |
1970 | PDP-11 | 16b | w | 2w,4w | w,2w,3w | 8b | 8b |
1971 | Intel4004 | 4b | w,d | – | 2w,4w | w | – |
1972 | Intel8008 | 8b | w,2d | – | w,2w,3w | w | 8b |
1972 | Calcomp900 | 9b | w | – | w,2w | w | 8b |
1974 | Intel8080 | 8b | w,2w,2d | – | w,2w,3w | w | 8b |
1975 | Cray-1 | 64b | 24b,w | w | ¼w,½w | w | 8b |
1975 | Motorola6800 | 8b | w,2d | – | w,2w,3w | w | 8b |
1975 | MOSTech.6501 | 8b | w,2d | – | w,2w,3w | w | 8b |
1976 | ZilogZ80 | 8b | w,2w,2d | – | w,2w,3w,4w,5w | w | 8b |
1978 | Intel8086 | 16b | ½w,w,2d | – | ½w,w,...7w | 8b | 8b |
1978 | VAX-11/780 | 32b | ¼w,½w,w,1d,...31d,1b,...32b | w,2w | ¼w,...14¼w | 8b | 8b |
1979 | Motorola68000 | 32b | ¼w,½w,w,2d | – | ½w,w,...7½w | 8b | 8b |
1982 | Motorola68020 | 32b | ¼w,½w,w,2d | – | ½w,w,...7½w | 8b | 8b |
1985 | ARM1 | 32b | w | – | w | 8b | 8b |
1985 | MIPS | 32b | ¼w,½w,w | w,2w | w | 8b | 8b |
1989 | Intel80486 | 16b | & |
ARM基础 相关文章:
- ARM基础知识连载之一(12-02)
- ARM基础知识 -- ELF映像文件(11-28)
- ARM基础:ARM 伪指令详解(11-20)
- ARM基础知识教程四:ARM存储系统概述(11-10)
- ARM基础:MMU 异常向量表 重映射(11-10)
- ARM基础:ARM指令之MSR(11-10)