计算机组成原理指令系统
(1) 三地址双操作
50
指令
数指执令行一条三地址的加法指令需要访问514
下条指令
次主.存。
个 ( 假 单 存A显 设 元 放1号第中地指中在三单)址令,主一取地O,存第存元址次第P指放一的(双中从二令在、1A操2取5操的主第0作第0作含存二0)数一义 的 操号数存指和→为 5 作操令单,的2: 0 数A有作元第303分3号0数中四0别,取次0第指将号三令加单次,法元从第的。2二结1200000次果0从保第第1存一二号操操0到...单作作0主元数数
操作数和存放加法的结果都不需要访问主存。
(4) 零地址双操作数指令
零地址双操作数指令中只有操作码字段, 操作数地址都是隐含的。操作数在堆栈的栈 顶位置和次栈顶位置,它们分别从堆栈中弹 出,送到运算器中进行运算,运算的结果再 压入堆栈。执行一条零地址的加法指令访问 主存的次数取决的定义及性能要求 3.2 指令格式及指令类型 3.3 指令和数据的编码及寻址方式 3.4 堆栈寻址方式 3.5 RISC机型
指令系统是指一台计算机所有机
器指令的集合,构成了计算机的机器 语言,是计算机硬件与上层软件的接 口。计算机的指令系统决定了计算机 的CPU的功能和结构。CISC和RISC 是现代两大典型指令系统体系结构。 设计一台机器的指令系统应考虑到其 完备性和完整性、兼容性、均匀性、 可扩充性。
DIV X ,Y ,X
共需5 条三地址指令,每条指令4 次访存,执行此 程序共访存20 次。
(2) 二地址指令程序
MOV X ,A MUL X ,B ADD X ,C SUB X ,D MOV Y ,E ADD Y ,F DIV X ,Y 共需7 条二地址指令,MOV 指令3 次访存,算术运 算指令4 次访存,执行此程序共访存2 × 3 + 5 × 4 = 26 次。
双操作数运算类指令的执行
对于双操作数运算类指令(如加法指令)来 说,每条指令中都需要包含以下4 个地址信 息:
① 第一操作数地址A1 ; ② 第二操作数地址A2 ; ③ 操作结果存放地址A3 ; ④ 下条将要执行指令的地址A4 。
这些地址信息可以明显地给出,称为显地址; 也可以依照某种事先的约定,用隐含的方式 给出,称为隐地址。
例:分别利用三地址、二地址、一地址和零地址指令 编制计算算术表达式x = (a×b+ c - d) ÷ (e+ f)的程序。
解:假设a、b 、c 表示操作数,A 、B 、C 表示操作 数所在存储地址。
(1) 三地址指令程序
MUL A ,B ,X
ADD SUB
X ,C ,X X ,D ,X
ADD E ,F ,Y
(1) 分别用三地址、二地址、一地址和零地 址指令编写程序,计算A = (B - C) × (D -E)(不允许覆盖任何操作数,可以使 用暂存单元) 。
(2) 分别计算所写程序的总字节数。 (3) 分别计算程序执行时的访存次数。
① 三地址指令程序
SUB B ,C ,A
SUB D ,E ,Tmp
MUL A ,Tmp ,A
从100 号单元中取第一操作数,第三次从2 00 号单元中取第二操作数,第四次将加法的 结果保存到主存的100 号单元。
(3) 一地址双操作数指令
一地址双操作数指令只有一个显地 执址行,一参条一加地运址算的加的法另指一令只个需操要作访问数两来次自主 累加 存1寄,0存第0器一号次单A从c元c5中。0取指号操单作令元数的中。含取由指于义令第为,一:第操二作次数从和 运算(结A果c都c)放在O累P加(寄A存1器中),→所以A读cc取第一
② 因为操作码8 位,地址码16 位,所以: 三地址指令程序中每条指令占7 个字节,程 序的字节总数为21 个字节;
③因为三地址指令占7 个字节,每条指令需访 存4 次才能取出,接下来每条指令还需要访 存3 次,所以3 条指令共访存21 次。
① 二地址指令程序
MOV A ,B SUB A ,C MOV Tmp ,D SUB Tmp ,E MUL A ,Tmp ②二地址指令程序中每条指令占5 个字节,程 序的字节总数为25 个字节;
号单元中,结果存放在主存的3
.
00 号单元,如图 所示。
.
300
(2) 二地址双操作数指令
二地址双操作数指令有两个显地址,第一操 作数地址同时兼作结果存放地址(目的地 址执)行一,条指二令地的址含的加义法为指令同样需要访问4 次 (主存A1。第)一O次P从(5A02号)单→元中A1取指令,第二次
软件 裸机
指令系统
指令格式
操作码 (OP)
操作数(D) 寻址方式 地址码
数寄 内 值存 存
器地 址
操作码表示指令要完成的操作,其长度决 定了指令系统可以表示的指令条数;操作数是 操作的对象,对象的类型由寻址方式部分决定
指令分类:依据操作数个数来分
OP
OP D
OP
D1
D2
OP D1 D2 D3
指令中地址个数的选取要考虑诸多的因 素。从缩短程序长度,用户使用方便,增加 操作并行度等方面来看,选用三地址指令格 式较好;从缩短指令长度,减少访存次数, 简化硬件设计等方面来看,一地址指令格式 较好。对于同一个问题,用三地址指令编写 的程序最短,但指令长度最长,而用二、一、 零地址指令来编写程序,程序的长度一个比 一个长,但指令的长度一个比一个短。
共需12 条指令,其中7 条一地址的进、出栈指令, 5 条零地址的算术运算指令。进、出栈指令3 次访 存,算逻指令4 次访存,执行此程序共访存7 × 3 + 5 × 4 = 41 次。
例: 某一机器的指令系统,操作码8 位, 地址码均为16 位,CPU 与主存之间每次传 送16 位数据。A 、B 、C 、D 、E 表示字地 址,存放16 位数据。
(3) 一地址指令程序 LOAD E
ADD F
STORE X LOAD A MUL B ADD C SUB D DIV X STORE X 共需9 条一地址指令,每条指令2 次访存,执行此 程序共访存9 × 2 = 18 次。
(4) 零地址指令程序
PUSH A PUSH B MUL PUSH C ADD PUSH D SUB PUSH E PUSH F ADD DIV POP X