【计组】-- 指令系统(2): 寻址技术
概绪
参考书目:《计算机组成原理》(第三版) 蒋本珊 编著
寻址,指的是寻找操作数的地址或者下一条将要执行的指令地址,包括编址和寻址方式
编址方式
编址方式指的是对各种设备进行编码的方式,需要编址的设备主要有 CPU 中的通用寄存器、主存储器和输入输出设备 3 种
编址单位
指令中地址码的位数
从减少指令长度的角度来看,最小寻址单位越大越好;从对字符或位的操作是否方便的角度看,最小寻址单位越小越好
寻址方式
基本数据寻址方式
总分
- A 表示指令上的形式地址,EA 表示有效地址,寻址的任务就是从 A –> EA 的过程
立即寻址
地址码就是操作数本身,而非其地址
- 取出指令即可使用
- 灵活性差
寄存器寻址
操作数存放在寄存器中,地址码存放寄存器地址,就、不用访问主存,减少时间
- 操作数 S = (EA)=(
Ri )
直接寻址
操作数存放在主存中,地址码存放主存的直接地址
- S = (EA)= (A)
- 地址空间受到指令中地址码字段的位数的限制
间接寻址
地址码存放主存的间接地址,通过其找到有效地址后经过一次或多次才能找到操作数
- 扩大了寻址范围
- 占用时间
寄存器间接寻址
克服间接寻址占用时间的缺点,将有效地址存放在寄存器中
- S = (EA)= ((
Ri ))
变址寻址
将变址寄存器
Rx 的内容和指令中的形式地址 A 相加得到有效地址 EA
- S = (EA)= ((
Rx ) + A) - 遇到频繁修改地址时,修改变址值即可,不需修改指令
基址寻址
基址寻址是将基址寄存器
Rb 中的内容与指令中的位移量 D 相加,形成操作数的有效地址 EA
- S = (EA)= ((
Rb )+ D)
变址寻址和基址寻址的异同
- 这两个寻址使用的算法是一样,而且在有些计算机中也是同样的硬件实现的
- 变址寻址中变址寄存器提供修改量(可变的),而指令提供基准值(不变的)
- 基址寻址中基址寄存器提供基准值(不变的),而指令提供位移量(可变的)
- 变址寻址是面向用户的,用于访问字符串、数组等成批数据
- 基址寻址是面向系统的,主要用于逻辑地址和物理地址的变换
相对寻址
相对寻址是基址寻址的一种变通,改为程序计数器 (PC) 提供基准地址,位移量指出的是操作数和现行指令之间的相对位置
- S = (EA)= ((PC)+ D)
- 采用相对寻址编写的程序可在主存中任意浮动,它放在主存中的任何地方,执行的效果都是一样的
页面寻址
相当于把整个主存空间分成若干个大小相同的区,每个区称为一页,每页有若干个主存单元,具体寻址方式在此不加累述了
自此,寻址技术就基本这些了,可能很多方面整理得不全面,毕竟大部分时间自己跑去画图了,有些难整理的地方也适当忽略了,慢慢增加自己这方面的耐心呗