【发布时间】:2012-04-18 14:49:28
【问题描述】:
我对内存对齐的概念有点困惑。所以这是我的疑问: 文本说的是,如果你想读取 4 个字节的数据,从一个不能被 4 整除的地址开始,你就会遇到内存访问未对齐的情况。例如,如果我想从地址 05 开始读取 10 个字节,这将被称为未对齐访问 (http://www.mjmwired.net/kernel/Documentation/unaligned-memory-access.txt)。
这种情况是否特定于 4 字节字可寻址架构,或者这对字节可寻址架构也有效?如果上述情况对于字节可寻址架构是不对齐的,为什么会这样?
谢谢!
【问题讨论】:
-
这是操作系统用来解决的问题之一......
-
据我所知,没有一个处理器具有 10 字节数据类型。让我们使用具有 32 位数据总线并试图从地址 1 读取 32 位值的普通处理器保持简单。这需要首先读取地址 0 处的值,将字节 1 移动到偏移量 0,移动字节 2到偏移量 1,将字节 3 移动到偏移量 2。然后读取地址 4 处的值并将字节 0 移动到偏移量 3。听起来涉及,不是吗:)
标签: memory assembly operating-system