Nameless Site

But one day, you will stand before its decrepit gate,without really knowing why.

0%

指令系统

指令系统概述及指令格式

指令的基本概念

  • 指令
    • 计算机能直接识别、执行的操作命令(机器指令);
    • 冯诺依曼结构计算机 “程序控制”原理实现的载体;
  • 指令系统(指令集)
    • 一台计算机中所有机器指令的集合;
    • 系列机:同一公司不同时期生产,基本系统结构和指令系统相同的计算机。 如IBM,PDP-11,VAX-11,Intel-x86
    • 兼容机:不同公司生产,基本系统结构和指令系统相同的计算机。 如IBM兼容机
  • 指令字长
    • 指令中包含的二进制位数
    • 与机器字长相比: 单字长、双字长、半字长等长度指令
    • 多字长指令:
      • 解决寻址较大存储空间的问题
      • 取指多次访问内存,影响速度,占用空间大
    • 等长指令: 指令字长度固定。
    • 变长指令: 指令字长度根据需要可变

指令分类

image-20191225115956648

image-20191225120008896

根据指令中操作数的物理位置分类:

  • 存储器-存储器(SS)型
  • 寄存器-寄存器(RR)型
  • 寄存器-存储器(RS)型

根据指令功能分类:

  • 传送指令 MOV 、PUSH/POP、 IN/OUT等
  • 定点算术运算指令 ADD、SUB、INC、CMP、MUL等
  • 位运算指令 NOT、AND、OR、SHL、SAL等
  • 控制转移指令 JMP 、JNE、CALL、RET等

指令格式

image-20191225120247603

  • 操作码字段的位数与支持的最大指令数量有关
    • 对于定长操作码而言,LengthOP =⌈log2 n⌉
    • 支持变长操作码时,操作码向不用的地址码字段扩展
  • 寻址方式字段的位数与支持的寻址方式种类有关
  • 地址码字段的作用及影响与其位数和寻址方式有关

寻址方式及指令寻址

指令的顺序寻址

  • 程序的指令序列在主存顺序存放。执行时从第一条指令开始(!),逐 条取出并执行,这种程序的顺序执行过程,称为顺序寻址方式。
  • CPU中设置程序计数器(PC)对指令的顺序号进行计数。PC开始时存 放程序的首地址,每执行一条指令,PC 加”1”,指出下条指令的地址, 直到程序结束。
    • 存储1条指令占用的字节单元数与存储字长有关!

跳跃寻址:
image-20191225123815326

操作数寻址方式

立即数寻址

地址码字段是操作数本身
例 MOV AX,200H ( AX <- 200H)
特点:

  • 取指操作将数据与指令一并读入CPU内部的寄存器,指令执行速度快
  • 便于程序设计(变量赋初值)
  • 数据大小受字段位数限制

寄存器寻址

操作数在CPU内部的寄存器中
例 MOV AX, BX ( AX <- ( BX))
特点:

  • 操作数在寄存器中,指令执行速度快
  • 能访问的数据大小一般与计算机字长有关
  • 地址字段的位数与计算机通用寄存器数量相关

直接寻址

地址码字段直接给出操作数在内存的地址. E=D, S=(D)
例 MOV AX, [200H]
特点:

  • 提供访问主存的操作
  • 获得数据要访问主存,指令执行速度慢
  • 地址字段的位数决定了访存空间大小

间接寻址

地址码字段给出的是操作数主存地址的地址. E=(D), S= ((D))
例 MOV AX, I[200H]
特点:

  • 获得数据要访问主存2次,指令执行速度太慢
  • 解决了直接寻址方式下地址字段的位数限制访存范围大小的问题

寄存器间接寻址

地址码字段给出的是寄存器编号R. E=(R), S= ((R))
例 MOV AX, [BX]
特点:

  • 获得数据只需访问主存1次
  • 解决了直接寻址方式下地址字段的位数限制访存范围大小的问题

相对寻址

E=D + (PC), D为指令中地址字段的值特点:

image-20191225130335074

  • 注意PC的改变对计算E的影响,如 本例中E = 200 + 2000 + 2
  • 可节省指令中的地址位数,便于程序在内存中成块移动

例 某计算机采用双字节长指令,内存基于字节寻址,指令中的数据采用补码表示,且PC 的值在取指阶段完成修改。
1)若某采用相对寻址指令的当前地址为2003H,且要求转移后的目标地址为200AH, 则该指令形式地址字段的值为多少?
2)2)若某采用相对寻址的指令的当前地址为2008H,且要求转移后的目标地址为2001H, 则该指令的形式地址字段的值为多少?
解: 1)200AH – (2003H +2) = 5 (0000 0101)
2)2001H – (2008H +2) = -9 (1111 0111 即F7H)
若计算机字长32位, 且PC的值在取指阶段修改,情况如何?
+2变为+4

基址寻址

指定一个基址寄存器B,与本指令地址无关 E= D + (B), D为指令中地址字段的值
MOV AX, 32[B]
特点:

  • 对某一程序而言,基址值设定后不变,故要访问不同数据需修改D
  • 使用基址寄存器可以访问更大的主存空间

变址寻址

指定一个变址寄存器X,与本指令地址无关, 内容可随要求改变, E= D + (X), D为指令中地址字段的值
MOV AX, 32[SI] SI,DI 都称为变址寄存器
特点:

  • 不改变指令即可改变数据的有效地址,可在循环中使用
  • 在字符串处理,向量运算等等成批数据处理中非常有用

总结

image-20191225130635792

指令格式设计

指令格式设计主要内容

  • 根据指令数量的要求及是否支持操作码扩展,确定操作码字段的位数
  • 根据对操作数的要求确定地址码字段的个数
  • 根据寻址方式的要求,为每个地址码字段确定寻址方式字段位数
  • 确定采用定长指令还是变长指令

指令格式设计举例

某机字长32位,采用三地址指令,支持8种寻址操作,完成60种操作,各 寻址方式均可在2K主存范围内取得操作数,并可在1K范围内保存运算结果。 问应采用什么样的指令格式?指令字长最少应为多少位?执行一条指令最多要 访问多少次主存?

image-20191225131913595


字长16位,主存64K,指令单字长单地址,80条指令。寻址方式有直接、 间接、相对、变址。请设计指令格式

image-20191225131937862

image-20191225132001888


设某指令系统指令字长16位,每个地址码为6位。若要求设计二地址指令15 条、一地址指令34条,问最多还可设计多少条零地址指令?
解: OP(4) A1(6) A2(6)
操作码按从短码到长码进行扩展编码
假定二地址指令编码: (0000 – 1110) 共15条,1111作为扩展标识; 则一地址指令编码的全集可表示为: 1111 000000 – 111111(假定扩向A1); 因一地址指令只需34条,可将全集中多余的30种编码作为向零地址指 令扩展的标识,假定为: 100010 – 111111 故最多可支持的故零地址指令数为: 30*2^6 条

MIPS 指令概述

MIPS 指令概述

  • MIPS (Microprocessor without Intellocked Pipleline Stages)是80年代初期由斯 坦福大学Hennessy教授领导的研究小组研制成功; Million Instructions Per Second
  • 属于精简指令集计算机RISC(Reduced Instruction Set Computer);-> 复杂指令集计算机CISC(Complex Instruction Set Computer );
  • MIPS指令集有MIPS I,MIPS II,MIPS III,MIPS IV,MIPS V,MIPS32,和 MIPS64多个版本;
  • 早期主要用于嵌入式系统,如Windows CE的设备,路由器,家用网关和视频游 戏机,现在已经在PC机、服务器中得到广泛应用

MIPS指令集有以下特点:

  • 简单的Load/Store结构
  • 易于流水线CPU设计
  • 易于编译器开发
  • MIPS指令的寻址方式非常简单,每条指令的操作也非常简单

MIPS指令格式概述

image-20191225143633747

MIPS 寄存器

image-20191225143652075

MIPS 寻址方式

  • 在MIPS32指令集中,不单设寻址方式说明字段
    image-20191225143724205
  • 立即数寻址 ( Immediate addressing)
    image-20191225143754663
  • 寄存器直接寻址(Register Addressing)
    image-20191225143826805
  • 基址寻址(Basic Addressing)
    image-20191225143858053
    使用基址寻址的指令:lw ,sw, lh, sh, lb, lbu等
    LB rt , offset (base)
  • 相对寻址
    image-20191225143956018
    使用相对寻址的指令:beq, bne
    if (GRP[rs] == GPR[rt]) PC = PC + 4 + BranchAddr
  • 伪直接寻址(页面寻址)
    image-20191225144037090
    使用伪直接寻址的指令:j, jal

MIPS指令详解

R型指令

image-20191225145613421

操作数和保存结果均通过寄存器进行;

  • op:操作码,所有R型指令中都全为0;
  • rs:寄存器编号,对应第1个源操作数;
  • rt:寄存器编号,对应第2个源操作数;
  • rd:寄存器编号,据此保存结果;
  • shamt:常数,在移位指令中使用;
  • funct:功能码,指定指令的具体功能;

image-20191225145707263

3寄存器R型指令

image-20191225145743811

2寄存器R型指令

image-20191225145805858

1寄存器R型指令

image-20191225145825365

I型指令

image-20191225145843032

操作数中涉及立即数,结果保存到寄存器;

  • op:标识指令的操作功能;
  • rs:第1个源操作数,是寄存器操作数;
  • rt:目的寄存器编号,用来保存运算结果;
  • imm:第2个源操作数,立即数;

image-20191225145942182

面向运算的I型指令

image-20191225150005890

面向访存的I型指令

image-20191225150028541

面向数位设置的I型指令

image-20191225150115338

面向条件转移(分支)的I型指令

image-20191225150151595

J型指令

image-20191225150223733

习题