【问题标题】:What is an 8-bit register on a desktop cpu?什么是桌面 cpu 上的 8 位寄存器?
【发布时间】:2011-11-16 09:39:42
【问题描述】:

通读以下instruction table manual,我发现8-bit registers 的整数乘法通常要快得多。

在普通桌面cpu的上下文中,8-bit register是什么意思?存储在 32 位寄存器中的值恰好在 8 位范围内?没有真正的 8 位寄存器,对吧?

【问题讨论】:

  • 不要把延迟和吞吐量混为一谈——仅仅因为一条指令有更高的延迟并不意味着它一定更慢
  • 是的。不过,8 位寄存器乘法也有更好的吞吐量。
  • 一些 x86 CPU 上确实如此。

标签: optimization x86 cpu cpu-registers 8-bit


【解决方案1】:

有实际的 8 位寄存器,它们只是完整寄存器的 一部分。例如,在 Intel cpus 上:

AL  8-bit
AH  8-bit
AX  16-bit
EAX 32-bit
RAX 64-bit

在图片中:

63                             32      24      16       8       0
|-------|-------|-------|-------|-------|-------|-------|-------|
                                                        |<- AL->|
                                                |<- AH->|
                                                |<----- AX ---->|
                                |<------------ EAX ------------>|
|<---------------------------- RAX ---------------------------->|

【讨论】:

    【解决方案2】:

    请参阅this excellent answer 了解类似问题。基本上,使用 Intel x86 架构,您可以访问寄存器的部分。没有实际的 8 位寄存器是对的,但是有一些方法可以仅访问完整寄存器的一部分。这是 Intel 的一个怪癖,因为 8086 希望尽可能与 8080 兼容。随着架构从 16 位到 32 位再到 64 位,这种怪癖随后被延续到新一代。通常,CPU 只支持完整的寄存器访问,所以这种分区有点奇怪。

    【讨论】:

      【解决方案3】:

      在 x86 中,您可以将 16 位寄存器的高半部分和低半部分寻址为 8 位寄存器

      【讨论】:

        猜你喜欢
        • 2014-11-18
        • 2011-01-20
        • 1970-01-01
        • 2020-11-21
        • 2013-04-21
        • 2019-03-26
        • 2011-03-31
        • 2012-09-19
        相关资源
        最近更新 更多