计算机组成与体系结构笔记(2)

3 指令系统

3.1 指令系统介绍

基本概念

  • 机器指令:计算机能识别、执行的某种操作命令
  • 指令系统:一台计算机中所有机器指令的集合
  • 指令格式:用二进制代码表示指令的结构形式

指令分类

  • 按操作数分类:三地址、二地址、一地址、零地址
  • 按指令字长度分类:等长指令、变长指令
  • 按操作数的物理位置分类
  • CISC: IBM, VAX
    • 指令数目多,指令功能复杂
  • RISC: MIPS, RAM

3.2 MIPS指令系统简介

MIPS全称:Microprocessor without Interlocked Piped Stages
特点:

  • 指令条数少,指令简单,不到100个
  • 寻址方式简单,有大量寄存器
    • 立即数寻址
    • 寄存器寻址
    • 基地址加16位偏移量*4的访存寻址
  • 指令长度固定,都是32位
  • 指令格式简单只有三种:立即数型(I)、转移性(J)、寄存器型®
  • 只有load和store指令可以访问存储器
  • 需要优秀的编译器支持

寄存器:

  • HI,LO:储存乘法结果

  • PC:当前执行程序的地址

  • 32个32位宽的通用寄存器
    在这里插入图片描述
    在这里插入图片描述

  • 大端存储:高对低,低对高

  • 小端存储:高对高,低对低
    在这里插入图片描述

由上题,大端存储,高对低,地址0存着00,地址1存着90

3.2.1 立即数指令(I型)

16位立即数,表示范围-215~215-1
立即数范围不够怎么办?

lui $t0 xxxx
ori $t0, $t0,yyyy

LUI 把一个16位的立即数填入到寄存器的高16位,低16位补零
t 0 16 x x x x 16 y y y y t0寄存器高16位是xxxx,低16位是yyyy 注意 t0不等于$0

3.2.2 R型指令

指令前6位是000000,即op=000000,由funct区别
and是R型指令,andi是I型指令

3.2.3 条件语句

在这里插入图片描述
PC gets updated (PC+4) during the fetch cycle so that it holds the address of the next instruction !!!
最远只能跳到215*4=217的地址

slt $t0, $s0, $s1 # if $s0<$s1, $t0=1
slti $t0, $s2, 15 # $t0=1, if $s2<15
sltiu $t0, $s0, 25 # $t0=1, if $s0<25

MIPS还有很多 pseudo指令,比如ble,bgt,bge,但是实际上只使用bne和beq,所以编译器需要用到$at寄存器。

3.2.4 J型语句

在这里插入图片描述
注意上图,立即数*4放入PC的后28位。
那个年代,操作系统还很落后,不是按页寻址,假设代码段最大范围是228=256MB,虚拟地址的后28位和物理地址相同,前四位可能不一样,这样的话jump语句记录的是绝对地址。
实际中,上图计算得到的地址也还是虚拟地址,操作系统负责将虚拟地址映射到实际地址。
函数调用:jal:jump and link
注意要将s寄存器存到栈中。

猜你喜欢

转载自blog.csdn.net/tiaozhanzhe1900/article/details/83115720