【问题标题】:Byte addressed mem and word addressed字节寻址存储器和字寻址
【发布时间】:2017-07-29 15:59:19
【问题描述】:

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

【问题讨论】:

  • 你能告诉我们你遇到这些的背景吗?
  • int 数组是字寻址的,char 数组(假设是 8 位 char)是字节寻址的。
  • @user315052:不——这些术语与计算机体系结构有关

标签: c memory


【解决方案1】:

这通常用于底层硬件的上下文中。现在大多数系统都有字节寻址存储器。也就是说,内存中的每个字节都可以单独寻址和获取。

一些系统具有字寻址存储器,而指针寄存器包含各个字的地址。此外,每当提取内存时,都会提取整个单词。如果你需要一个特定的字节,编译器会获取一个单词,然后安排从中获取所需的字节。

请注意,在这样的系统上,在指针上使用 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,因此在两者之间重新解释转换是“安全的”(即未定义的行为和令人困惑的)。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-13
      • 2019-11-05
      • 1970-01-01
      • 2018-07-27
      • 1970-01-01
      • 2022-01-11
      • 1970-01-01
      • 2013-08-28
      相关资源
      最近更新 更多