【计组】-- 指令系统(2): 寻址技术


概绪

参考书目:《计算机组成原理》(第三版) 蒋本珊 编著


  寻址,指的是寻找操作数的地址或者下一条将要执行的指令地址,包括编址和寻址方式


编址方式

编址方式指的是对各种设备进行编码的方式,需要编址的设备主要有 CPU 中的通用寄存器、主存储器和输入输出设备 3 种


编址单位

【计组】-- 指令系统(2): 寻址技术

指令中地址码的位数

从减少指令长度的角度来看,最小寻址单位越大越好;从对字符或位的操作是否方便的角度看,最小寻址单位越小越好


寻址方式

【计组】-- 指令系统(2): 寻址技术


基本数据寻址方式

总分

【计组】-- 指令系统(2): 寻址技术

  • A 表示指令上的形式地址,EA 表示有效地址,寻址的任务就是从 A –> EA 的过程


立即寻址

地址码就是操作数本身,而非其地址



【计组】-- 指令系统(2): 寻址技术

  • 取出指令即可使用
  • 灵活性差


寄存器寻址

操作数存放在寄存器中,地址码存放寄存器地址,就、不用访问主存,减少时间

【计组】-- 指令系统(2): 寻址技术

  • 操作数 S = (EA)=(Ri

直接寻址

操作数存放在主存中,地址码存放主存的直接地址

【计组】-- 指令系统(2): 寻址技术

  • S = (EA)= (A)
  • 地址空间受到指令中地址码字段的位数的限制

间接寻址

地址码存放主存的间接地址,通过其找到有效地址后经过一次或多次才能找到操作数

  • 扩大了寻址范围
  • 占用时间


寄存器间接寻址

克服间接寻址占用时间的缺点,将有效地址存放在寄存器中

【计组】-- 指令系统(2): 寻址技术

  • S = (EA)= ((Ri))


变址寻址

将变址寄存器 Rx 的内容和指令中的形式地址 A 相加得到有效地址 EA

【计组】-- 指令系统(2): 寻址技术

  • S = (EA)= ((Rx) + A)
  • 遇到频繁修改地址时,修改变址值即可,不需修改指令


基址寻址

基址寻址是将基址寄存器 Rb 中的内容与指令中的位移量 D 相加,形成操作数的有效地址 EA

【计组】-- 指令系统(2): 寻址技术

  • S = (EA)= ((Rb)+ D)


变址寻址和基址寻址的异同

  • 这两个寻址使用的算法是一样,而且在有些计算机中也是同样的硬件实现的
  • 变址寻址中变址寄存器提供修改量(可变的),而指令提供基准值(不变的)
  • 基址寻址中基址寄存器提供基准值(不变的),而指令提供位移量(可变的)
  • 变址寻址是面向用户的,用于访问字符串、数组等成批数据
  • 基址寻址是面向系统的,主要用于逻辑地址和物理地址的变换


相对寻址

相对寻址是基址寻址的一种变通,改为程序计数器 (PC) 提供基准地址,位移量指出的是操作数和现行指令之间的相对位置


【计组】-- 指令系统(2): 寻址技术

  • S = (EA)= ((PC)+ D)
  • 采用相对寻址编写的程序可在主存中任意浮动,它放在主存中的任何地方,执行的效果都是一样的


页面寻址

相当于把整个主存空间分成若干个大小相同的区,每个区称为一页,每页有若干个主存单元,具体寻址方式在此不加累述了





自此,寻址技术就基本这些了,可能很多方面整理得不全面,毕竟大部分时间自己跑去画图了,有些难整理的地方也适当忽略了,慢慢增加自己这方面的耐心呗