2012-08-09 90 views
1

字地址存储器和字节地址存储器是什么意思?字节地址存储器和字地址

+5

你能告诉我们你遇到这些情况的背景吗? – cnicutar 2012-08-09 06:47:06

+0

int数组是字地址,并且char数组(假定为8位字符)是字节地址。 – jxh 2012-08-09 06:49:57

+0

@ user315052:不是 - 这些术语与计算机体系结构有关 – 2012-08-09 10:05:59

回答

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之间。

0

与汤姆同意......在字访问内存时(在AHB总线等)访问内存对于这种类型的内存,你可以拥有整个4个字节,如果U尝试访问字节,你会得到不确定的行为