字寻址内存和字节寻址内存是什么意思?
发布于 2012-08-09 15:26:41
这通常在底层硬件的上下文中使用。现在大多数系统都有字节寻址的内存。也就是说,存储器中的每个字节都可以单独寻址和提取。
有些系统具有字寻址存储器,并且指针寄存器包含单个字的地址。此外,每当获取内存时,都会获取一个完整的单词。如果您需要一个特定的字节,编译器将获取一个字,然后安排从中获取所需的字节。
请注意,在这样的系统上,在指针上使用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-09 18:26:50
同意Tom...in字访问存储器你可以有完整的4个字节时访问存储器(如在AHB总线)对于这种类型的存储器,如果你试图访问字节,你将得到未定义的行为
https://stackoverflow.com/questions/11878093
复制相似问题