【发布时间】:2017-07-29 15:59:19
【问题描述】:
字寻址存储器和字节寻址存储器是什么意思?
【问题讨论】:
-
你能告诉我们你遇到这些的背景吗?
-
int 数组是字寻址的,char 数组(假设是 8 位 char)是字节寻址的。
-
@user315052:不——这些术语与计算机体系结构有关
字寻址存储器和字节寻址存储器是什么意思?
【问题讨论】:
这通常用于底层硬件的上下文中。现在大多数系统都有字节寻址存储器。也就是说,内存中的每个字节都可以单独寻址和获取。
一些系统具有字寻址存储器,而指针寄存器包含各个字的地址。此外,每当提取内存时,都会提取整个单词。如果你需要一个特定的字节,编译器会获取一个单词,然后安排从中获取所需的字节。
请注意,在这样的系统上,在指针上使用 reinterpret_cast 是非常危险的,因为实现可能(为了提高效率)将指向字对齐事物的指针保留为字指针,并将指向字节对齐事物的指针保留为字节指针。所以如果你的记忆看起来有点像这样:
word X : aa ab ac ed
word X+1: ba bb bc bd
指向字 X 的指针将包含 X,但指向 aa 的字节指针将包含 X*4
reinterpret_cast<word *>(&aa) 会给你一个 X*4 的字指针,这会很尴尬。
在字节寻址的机器上,字和字节指针都将包含 X*4,因此在两者之间重新解释转换是“安全的”(即未定义的行为和令人困惑的)。
【讨论】:
同意 Tom...在字访问内存中,当访问内存时(如在 AHB 总线中),您可以拥有整个 4 个字节。对于这种类型的内存,如果您尝试访问字节,您将得到未定义的行为
【讨论】: