ScholarGate
助手

寻址模式

寻址模式是指令指定其操作数位置的规则——操作数可以位于寄存器中、作为立即数嵌入指令中,或者位于通过寄存器和偏移量计算出的内存地址中。

用 PaperMind 寻找选题即将推出Find papers & topics
Tools & resources
下载幻灯片
Learn & explore
视频即将推出

Definition

寻址模式是指令指定的一种确定操作数位置的方法,范围从直接保存在寄存器或指令本身中的值,到从基址寄存器、变址寄存器和偏移量计算出的地址。

Scope

本主题涵盖了操作数命名和定位的方式:立即数、寄存器、寄存器间接、基址加偏移量、变址、PC相对以及更复杂的计算模式。它探讨了寻址模式如何影响代码大小、指令数量和硬件复杂性。它不包括指令在位中的编码方式(指令格式和编码)以及系统的虚拟到物理地址转换(虚拟内存和分页)。

Core questions

  • 每种寻址模式如何计算操作数的有效地址或值?
  • 在实际程序中,哪些寻址模式最常用,为什么?
  • 更丰富的寻址模式如何以硬件和解码复杂性为代价减少指令数量?
  • 为什么加载-存储架构将内存访问限制在少数几种简单模式中?

Key concepts

  • 立即数寻址
  • 寄存器寻址
  • 寄存器间接寻址
  • 基址加偏移量
  • 变址寻址
  • PC相对寻址
  • 有效地址计算
  • 加载-存储限制

Mechanisms

每种寻址模式都定义了处理器如何获取操作数。立即数操作数编码在指令中;寄存器操作数从寄存器文件中读取;内存操作数通过将基址寄存器、可选的比例变址和偏移量相加来计算有效地址。PC相对寻址根据程序计数器形成相对地址,这支持位置无关代码和分支目标。

Clinical relevance

寻址模式决定了编译器如何生成代码:基址加偏移量自然地映射到结构体字段和栈变量,变址模式映射到数组访问,PC相对寻址映射到位置无关可执行文件和共享库。RISC加载-存储设计有意保持内存寻址简单,以简化流水线,而CISC机器则提供更丰富的模式以提高代码密度。

History

早期和CISC架构积累了许多复杂的寻址模式,包括内存间接和自增形式。对指令使用情况的实证研究表明,一小组简单模式占据了大多数访问,这促使RISC决定只支持少数几种模式,并将内存访问限制在加载和存储指令中。

Key figures

  • John L. Hennessy
  • David A. Patterson

Related topics

Seminal works

  • hennessy2019
  • patterson2020

Frequently asked questions

为什么RISC架构支持的寻址模式如此之少?
研究发现,程序绝大多数使用少数几种简单模式。将内存访问限制在寄存器间接和基址加偏移量模式,可以保持流水线简单且有效地址计算快速,而编译器则可以从这些基本模式合成任何更丰富的访问模式。
PC相对寻址有什么用?
PC相对寻址将地址计算为程序计数器的偏移量。它用于分支和跳转目标以及访问附近数据,从而实现位置无关代码,无论加载到内存的哪个位置都能正确运行。

Methods for this concept

Related concepts