字寻址存储器和字节寻址存储器是什么意思?
问问题
163 次
2 回答
4
这通常用于底层硬件的上下文中。现在大多数系统都有字节寻址存储器。也就是说,内存中的每个字节都可以单独寻址和获取。
一些系统具有字寻址存储器,并且指针寄存器包含各个字的地址。此外,每当提取内存时,都会提取整个单词。如果您需要特定字节,编译器将获取一个字,然后安排从中获取所需的字节。
请注意,在这样的系统上,在指针上使用 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,因此在两者之间 reinterpret_cast 是“安全的”(即未定义的行为和令人困惑的)。
于 2012-08-09T07:26:40.810 回答
0
同意汤姆...在字访问内存中,当访问内存时,您可以拥有整个 4 个字节(如在 AHB 总线中)对于这种类型的内存,如果您尝试访问字节,您将得到未定义的行为
于 2012-08-09T10:26:50.037 回答