计组--指令集及其特性

Chapter2-1 指令集及其特性

指令集:一个给定的计算机体系结构所包含的指令集合。

指令中包含

操作码 (Op code)—— Do this

源操作数引用 (Source Operand reference)—— To this

结果操作数引用(Result Operand reference)—— Put the answer here

下一个指令引用(Next Instruction Reference)—— When you have done that, do this

指令周期演示图:

计组--指令集及其特性_第1张图片

 

指令表示:在机器代码中,每个指令都有唯一的位模式。 

一种简单的指令格式计组--指令集及其特性_第2张图片

指令类型:数据处理,数据储存(主内存),数据移动(I/O),程序流控制

存储程序概念(存储程序):多种类型的指令和数据均以数字形式存储与存储器中的概念。

极计算机硬件的操作

每条MIPS指令只执行一个操作。与加法类似的指令一般都有三个操作数:两个进行运算的数和一个保存结果的数。

a = b + c + d - e

add a, b, c       # the sum of b and c is placed in a 

add a, a, d       # the sum of b, c, and d is now in a

sub a, a, e       # the difference of a and e is now in a

Q:对于一个给定的功能,用下列哪种编程语言实现可能花费的代码行数最多?将下面3种语言排序:

      1. java  2. C  3. MIPS汇编语言

计算机硬件的操作数

MIPS算术运算指令的操作数必须来自寄存器(register)。在MIPS体系结构中寄存器的大小为32位,在MIPS体系结构中将其称为“字”

字(word):计算机中的基本访问单位,通常是32位一组,在MIPS体系结构中与寄存器大小相同。

MIPS算术指令的三个操作数必须从32个32位寄存器中选取。

寄存器个数限制为32个的原因:1. “越小越快”,大量的寄存器可能会使时钟周期变长,因为电信号传输更远的距离必然花费更长的时间。2. 受指令格式位数的限制

约定:用“$”后面跟两个字符来表示一个寄存器。使用$s0, $s1, ...来表示与C和Java程序中的变量所对应的寄存器;用$t0, $t1, ...来表示将程序编译为MIPS指令时所需的临时寄存器。

例:f = ( g + h ) - ( i + j ),变量f、g、h、i、j依次分配给寄存器$s0, $s1, $s2, $s3 和 $s4。编译后的MIPS码是什么?

add $t0, $s1, $s2         #register $to contains g + h

add $t1, $s3, $s4         #register $t1 contains i + j

sub $s0, $t0, $t1          # f gets $t0 - $t1, which is ( g + h ) - ( i + j )

存储器操作数

对于像数组和结构那样的复杂数据结构,其中的数据元素可能远多于寄存器的个数。如何访问这样大的结构呢?

这些数据结构是存放在存储器中的。而MIPS的算术运算指令只对寄存器进行操作,因此MIPS必须包含在存储器和寄存器之间传送数据的指令,这些指令被叫做数据传送指令(data transfer instruction)。为了访问存储器中的一个字, 指令必须给出存储器地址(address)

存储器就是一个很大的下标从0开始的一维数组,地址就相当于数组的下标。

取数指令(load):指令符为lw(load word的缩写)。格式如下:

lw $s1, 5($s0)

格式为:操作码+ 目标寄存器+ 用来访问存储器的常数+ 存放数组的起始地址的寄存器

基址(base address):数组A的起始地址

基址寄存器(base register):存放基址的寄存器

偏移量(offset):数据传送指令中的常量(取数组中下标为x的元素的值)

例:设A是一个含有100个字的数组,变量g, h仍分配给寄存器$s1, $s2。设数组A的起始地址(基址)存放在寄存器 $s3中。试编译下面的C赋值语句:g = h + A[8]

解答:lw $t0, 8($s3)                    # temporary reg $t0 gets A[8]

           add $s1, $s2, $t0              # g = h + A[8]

你可能感兴趣的:(计算机组成与设计)