指令系统

指令系统

MIPS操作数


MIPS算术运算指令的操作数必须来自寄存器。
寄存器分类:

MIPS汇编指令

  • 算术指令

  • 数据传输指令
    在存储器和寄存器之间移动数据的命令

    ex1:

假设变量h存放在寄存器$s2中,数组A的基址放在$s3中,试将C语言:A[12] = h + A[8]翻译成MIPS指令:  
lw $t0, 32($s3) #从内存中取A[8]的值给寄存器$t0
add $t0, $s2, $t0 #$t0 = h + A[8]
sw $t0, 48($s3)   #将h + A[8]存到内存A[12]的位置  
注意:  
1)由于在MIPS体系中,数据是以**字**为形式存储的,因此在我们转换地址的过程中,要将其转换成**字节**的形式,因此我们需要4x8和4x12  
2)指令lw和sw是用来在存储器和寄存器之间赋值字的指令,而第二个操作数前面的数指的是偏移量,是以字节为单位的
  • 逻辑指令

    • 移位:将一个字里面的所有为都向左或者向右移动,并在空出来的位上填充0
    • 按位与:操作到位
  • 条件分支指令

  • 无条件跳转指令

MIPS寻址模式

  • 立即数寻址
    操作数是位于指令自身中的常数

  • 寄存器寻址
    操作数是寄存器,

  • 基址寻址
    操作数在内存中,其地址是指令中基址寄存器和常数的和。

  • PC相对寻址
    地址是PC和指令中常数的和。

  • 伪直接寻址
    跳转地址由指令中26位字段和PC高位相连而成。

CISC和RISC

按指令格式的复杂度来分,可以分为CISC和RISC两种类型指令系统:

  • 复杂指令集计算机(Complex Instruction Set Computer,CISC)

    • 指令系统复杂
      指令多,寻址方式多,变长指令多,指令格式多
    • 指令周期长
      需要多个时钟周期才能完成
    • 指令周期差距大
      各种指令都能访问存储器,使得简单指令和复杂指令所用的时钟周期数相差很大,不利于指令流水线的实现
    • 采用微程序控制
      由于有些指令非常复杂,以至于无法用组合逻辑控制器来实现,而微程序控制器用软件设计西乡实现硬件,可以实现对复杂指令的控制
    • 难以进行编译优化
      由于编译器可选指令序列增多,使得目标代码组合增加,从而增加了目标打码优化的难度
  • 精简指令集计算机(Reduced Instruction Set Computer,RISC)

    • 指令数目少
    • 指令格式规整
    • 采用Load/Store型指令设计风格
    • 采用流水线方式执行指令
    • 采用大量通用寄存器
    • 采用组合逻辑电路控制

你可能感兴趣的:(计算机组成原理)