字节处理内存和字处理

时间:2012-08-09 06:45:55

标签: c memory

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

2 个答案:

答案 0 :(得分: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,因此在两者之间重新解释广播是“安全的”(也就是说未定义的行为和混淆)。

答案 1 :(得分:0)

同意Tom ...在字访问存储器中,当访问存储器时可以有4个字节(如在AHB总线中)对于这种类型的存储器,如果你尝试访问字节,你将得到未定义的行为