第三章 指令系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件 裸机
指令系统
指令格式
操作码 (OP)
操作数(D) 寻址方式 地址码
数寄 内 值存 存
器地 址
操作码表示指令要完成的操作,其长度决 定了指令系统可以表示的指令条数;操作数是 操作的对象,对象的类型由寻址方式部分决定
指令分类:依据操作数个数来分
OP
OP D
OP
D1
D2
OP D1 D2 D3
指令中地址个数的选取要考虑诸多的因 素。从缩短程序长度,用户使用方便,增加 操作并行度等方面来看,选用三地址指令格 式较好;从缩短指令长度,减少访存次数, 简化硬件设计等方面来看,一地址指令格式 较好。对于同一个问题,用三地址指令编写 的程序最短,但指令长度最长,而用二、一、 零地址指令来编写程序,程序的长度一个比 一个长,但指令的长度一个比一个短。
从“20%-80%律”出发,人们开始了对指令系 统合理性的研究,提出了精简指令系统的想法, 出现了精简指令系统计算机,简称RISC。
(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
例:指令格式如下:
4位
4位
4位
4位
如何表示61条指令,其中三地址、两地址、一 地址指令各15条,零地址指令16条?能否表示 更多条指令?
4位
4位
4位
4位
OOPP OP OAP1 OP A21
A321
…… … …
0000 XXXX YYYY ZZZZ 15条三地址指令
扩展窗口1110 XXXX YYYY ZZZZ 1111 0000 XXXX YYYY
(1) MOV FF01H ,R0
(2) MOV R1 ,FF02H
(3) MOV R2 ,FF00H
(4) MOV FF00H ,R3
常用操作数寻址方式
立即寻址 #imme 直接寻址 LOC 间接寻址 (LOC) 寄存器直接寻址 Ri 寄存器间接寻址 (Ri) 寄存器变址寻址 X(Ri) 相对寻址 X(PC) 基址寻址 X(BX) 隐含寻址 其他寻址方式(块寻址、段寻址)
② 因为操作码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 个字节;
寄存器/存储器:直接给出寄存器或存储 器的地址码(名称)即可; 注:寄存器(CPU内部或外围设备内部) 及存储器的编址方式: 1)字编址、字节编址、位编址; 2)统一编址、非统一编址
操作数的编码方式
例:设某机主存容量为16MB ,机器 字长16 位,若最小寻址单位为字节 (按字节编址) ,其地址码为多少位? 若最小寻址单位为字(按字编址) ,其 地址码又为多少位?
例:分别利用三地址、二地址、一地址和零地址指令 编制计算算术表达式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) 三地址双操作
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主元数数
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 次。
PUSH reg
4 31
32
ADD reg w immediate
8
32
CALL offset
6
11
8
8
MOVE d w displacement displacement
71
8
32
TEST w postbyte immediate
RISC机型
80%不常用 指令
复2杂精0指%指简系常令指统用令 令系统
注:内存寻址时存在的对齐方式:大端序、小端序
例: 设寄存器R 中的数值为1000H ,地址为1000H 的存 储单元中存储的内容为2000H ,地址为2000H 的存储 单元中存储的内容为3000H ,PC 的值为4000H ,问以 下寻址方式下访问到的操作数的值是什么? (1) 寄存器寻址R ;(2) 寄存器间接寻址(R) ;(3) 直接寻址1000H ;(4) 间接寻址(1000H) ;(5) 相对寻址- 2000H(PC) ;(6) 立即寻址# 2000 H。 解:(1) 采用寄存器寻址,操作数在寄存器中,S = (R) = 1000H 。(2) 采用寄存器间接寻址,操作数的有效地 址在寄存器中,EA = (R) ,操作数S =((R)) = (10 00H) = 2000H 。(3) 采用直接寻址,操作数的有效 地址在指令中给出,EA = 1000H ,操作数S =(1000 H) = 2000H 。(4) 采用间接寻址,操作数有效地址在 主存单元中,EA = (1000H) = 2000H ,操作数S = (2000H) = 3000H 。(5) 采用相对寻址,操作 数有效地址为PC 中的内容与指令中的位移量D 之和,即EA = (PC) + D = 4000H - 2000H = 2000H ,操作 数S = (2000H) = 3000H 。(6) 采用立即寻址, 操作数直接在指令中给出,S = 2000H 。
操作数和存放加法的结果都不需要访问主存。
(4) 零地址双操作数指令
零地址双操作数指令中只有操作码字段, 操作数地址都是隐含的。操作数在堆栈的栈 顶位置和次栈顶位置,它们分别从堆栈中弹 出,送到运算器中进行运算,运算的结果再 压入堆栈。执行一条零地址的加法指令访问 主存的次数取决于堆栈的结构。
举例
③因为二地址指令占5 个字节,每条指令需访 存3 次才能取出。除取指令外,传送指令还 需访存2 次,运算指令还需访存3 次,所以 总的访存次数为:5 × 3 + 2 × 2 + 3 × 3 =28 次。
指令分类:依据指令功能来分
算术逻辑运算类指令(ADD、AND) 移位指令和循环指令(CLR、RL) 传送类指令(MOV) 串指令(CWB) 顺序控制类指令(JMP) 特权指令(CHMOD) 输入输出指令(IN OUT或利用访存指令)
号单元中,结果存放在主存的3
.
00 号单元,如图 所示。
.
300
(2) 二地址双操作数指令
二地址双操作数指令有两个显地址,第一操 作数地址同时兼作结果存放地址(目的地 址执)行一,条指二令地的址含的加义法为指令同样需要访问4 次 (主存A1。第)一O次P从(5A02号)单→元中A1取指令,第二次
第三章 指令系统
3.1 指令系统的定义及性能要求 3.2 指令格式及指令类型 3.3 指令和数据的编码及寻址方式 3.4 堆栈寻址方式 3.5 RISC机型
指令系统是指一台计算机所有机
器指令的集合,构成了计算机的机器 语言,是计算机硬件与上层软件的接 口。计算机的指令系统决定了计算机 的CPU的功能和结构。CISC和RISC 是现代两大典型指令系统体系结构。 设计一台机器的指令系统应考虑到其 完备性和完整性、兼容性、均匀性、 可扩充性。
双操作数运算类指令的执行
对于双操作数运算类指令(如加法指令)来 说,每条指令中都需要包含以下4 个地址信 息:
① 第一操作数地址A1 ; ② 第二操作数地址A2 ; ③ 操作结果存放地址A3 ; ④ 下条将要执行指令的地址A4 。
这些地址信息可以明显地给出,称为显地址; 也可以依照某种事先的约定,用隐含的方式 给出,称为隐地址。
(1) 分别用三地址、二地址、一地址和零地 址指令编写程序,计算A = (B - C) × (D -E)(不允许覆盖任何操作数,可以使 用暂存单元) 。
(2) 分别计算所写程序的总字节数。 (3) 分别计算程序执行时的访存次数。
① 三地址指令程序
SUB B ,C ,A
SUB D ,E ,Tmp
MUL A ,Tmp ,A
共需12 条指令,其中7 条一地址的进、出栈指令, 5 条零地址的算术运算指令。进、出栈指令3 次访 存,算逻指令4 次访存,执行此程序共访存7 × 3 + 5 × 4 = 41 次。
例: 某一机器的指令系统,操作码8 位, 地址码均为16 位,CPU 与主存之间每次传 送16 位数据。A 、B 、C 、D 、E 表示字地 址,存放16 位数据。
扩展窗口1111 1110 XXXX YYYY 15条二地址指令
扩展窗口 1111 1111 0000 XXXX 15条一地址指令 1111 1111 1110 XXXX 1111 1111 1111 0000 16条零地址指令 1111 1111 1111 1111
操作数的编码方式
立即数:直接将数据表示成二进制形式
解:若按字节编址,地址码应为24 位 (2^24 = 16MB) ;若按字编址, 地址码只需23 位。
操作数的编码方式
例:假设某外设接口中有3 个寄存器,它们通
过数据总线与CPU 相连,其总线地址如下:
数据寄存器
FF00H
命令字寄存器 FF01H
状态字寄存器 FF02H
下列4 条指令完成的操作分别是什么?
常用指令寻址方式
顺序寻址方式 跳跃寻址方式:直接、相对、间接
栈及相关概念
1、栈的分类: 用寄存器实现堆栈(串联堆栈) 内存中开辟堆栈区
自底向上生成堆栈 自顶向下生成堆栈 2、栈的建立: 将栈顶地址传送到SP中 3、栈的操作: PUSH/POP、MOV
IA32指令系统
寻址方式:立即数、寄存器直接、寄存器间接、存储器直接、 存储器间接、基址寻址、基址加比例寻址
从100 号单元中取第一操作数,第三次从2 00 号单元中取第二操作数,第四次将加法的 结果保存到主存的100 号单元。
Biblioteka Baidu
(3) 一地址双操作数指令
一地址双操作数指令只有一个显地 执址行,一参条一加地运址算的加的法另指一令只个需操要作访问数两来次自主 累加 存1寄,0存第0器一号次单A从c元c5中。0取指号操单作令元数的中。含取由指于义令第为,一:第操二作次数从和 运算(结A果c都c)放在O累P加(寄A存1器中),→所以A读cc取第一
指令类型:控制类(JNZ\JZ\JMP\CALL\RET\LOOP)、数据
传送类(MOV\PUSH\POP\LES)、算术逻辑运算类
(ADD\SUB\CMP\SHL\SHR\RCR\CBW\TEST\INC\DEC\OR\X
OR)、字符串(MOVS\LODS)
指令格式: 4
4
8
5
3
JE conditions displacement
指令系统的设计
指令的编/译码:操作码编码、操作 数编码
指令及操作数的寻址
操作码编码方式
固定长度、区域集中:可表示的指令个数有 限,译码简单、快速
可变长度、区域分散:控制器复杂,可表示 的指令多
通常采用两者结合的方式进行设计,选择设计方
案的原则是常用的指令尽量分配简短的操作码,以降 低占用的存储空间,缩短译码时间,从而提高程序运 行速度