当前位置: 代码迷 >> 汇编语言 >> 现代计算机的的内存是否是按字节编址?该怎么解决
  详细解决方案

现代计算机的的内存是否是按字节编址?该怎么解决

热度:9219   发布时间:2013-02-26 00:00:00.0
现代计算机的的内存是否是按字节编址?
看的组成原理方面的书,包括深入理解计算机系统等.一般默认这种说法.
比如说我给定一个地址0x12345678,那么这个内存单元内的数据位数就是1个字节吗?

这样做是不是为了和CPU内寄存器相协调?
比如说我是按4字节编址,但是CPU内寄存器只有8位,这样MOV操作就会比较麻烦?

还是说现在的计算机(特指PC)早已经不用字节编址了?而是一个地址内有多个字节?

谢谢

------解决方案--------------------------------------------------------
现在的 PC 内存还是以字节为单元编址的。内存单元的位数、cpu 内寄存器的位数、数据总线的位数,这些是可以不一样的。尽管内存单元为 1 字节,但一次内存访问可以操作的数据位数由数据总线决定,只是要一次性地访问整个数据总线位的话,访问单元的起始地址必须对齐到总线位数上,否则会被拆分为两个访问(这个拆分是 cpu 自动完成的,对程序来说透明,最多是损失些性能);比如数据总线 32 位,访问 0x12345678 一次可以访问那里的 32 位即 4 字节的数据,但要求 0x12345678 能被 4 整除,否则如果是 0x01234567 这样的,就要被拆分了,甚至在些要求高的指令里会引发访问异常!
------解决方案--------------------------------------------------------
请参考:
http://topic.csdn.net/t/20031002/22/2321942
------解决方案--------------------------------------------------------
intel x86? 还是MIPS ?这是有差别的哦!
  相关解决方案