第四章 指令系统

第四章 指令系统通用寄存器 以 X 为结尾的由于这些通用寄存器的高两位字节和低两位字节可以独立使用 又衍生出一些寄存器的表示 eg EAX 的低两位字节被称为 AX 而 AX 的高低字节又可分别作为两个 8 位寄存器 分别为

大家好,欢迎来到IT知识分享网。

Q:什么是指令?什么是指令系统?为什么要引入指令系统?

Q:一般来说,指令分为哪些部分?每部分有什么用处?

Q:对于一个指令系统来说,寻址方式多和少有什么影响?

一、指令系统

1.指令集体系结构

机器指令(指令):指示计算机执行某种操作的命令。

指令系统(指令集):一台计算机的所有指令的集合的构成。

        1)指令格式,指令寻址方式,操作类型,以及每种操作对应的操作数的相应规定。

        2)操作数类型,操作数寻址方式,以及按大端方式还是小端方式存放。

        3)程序可访问的寄存器编号、个数和位数、存储空间的大小和编址方式。

2.指令的基本格式

一条指令就是一组有意义的二进制代码。

第四章 指令系统

操作码:这条指令干什么

        单字长指令:指令字长=机器字长

        半字长指令:指令字长=机器字长的一半

        note:指令字长和机器字长没有固定的关系

①零地址指令

第四章 指令系统
无地址码

这种指令有两种可能:

       不需要操作数的指令  eg:空操作指令、停机指令、关中断指令

        零地址的运算类指令仅用在堆栈计算机中。(堆栈指令)

                 参与运算的两个操作数隐含地从栈顶和次栈顶弹出,送到运算器进行运算,运算结果再隐含地压入堆栈。

②一地址指令

第四章 指令系统

         OP(A_{1}) \rightarrow A_{1}
       (ACC)OP(A_{1}) \rightarrow ACC

若地址码均为主存地址,完成一条一地址指令需要3次访存(取指令1次、取操作数1次、存结果1次)
 



③二地址指令

第四章 指令系统

指令含义:(A_{1})OP(A_{2}) \rightarrow A_{1}  (121)
 

若地址码均为主存地址,完成一条二地址指令需要4次访存(取指令1次、取操作数2次、存结果1次)

④三地址指令

第四章 指令系统

指令含义:(A_{1}) OP(A_{2}) \rightarrow A_{3} (123)
 

若地址码均为主存地址,完成一条二地址指令需要4次访存(取指令1次、取操作数2次、存结果1次)

⑤四地址指令

第四章 指令系统

指令含义:(A_{1}) OP(A_{2}) \rightarrow A_{3} (1234)  A_{4}:下一条将要执行指令的地址

若地址码均为主存地址,完成一条二地址指令需要4次访存(取指令1次、取操作数2次、存结果1次)

3.定长操作码指令格式

定长操作码指令:

         在指令字的最高位部分分配固定的若干位(定长)表示操作码。一般n位操作码字段指令系统最大能够表示 2^{n}条指令。     

4.扩展操作码指令格式

        1.不允许短码是长码的前缀

        2.各指令的操作码一定不能重复

设计扩展码的核心思想:操作码的位数随地址数的减少而增加

        2^{o} 留n位的话,4位操作码对应的四地址指令个数:2^{4}-n
        3^{o} 再编次长地址指令:留m位的话,8位操作码对应的三地址指令个数为:n*2^{3}-m  (因为操作码留完了,此时,地址码位数减少,变成操作码

        4^{o} 依次类推。

        

5.指令的操作类型

①数据传送

通常有寄存器之间的传送(MOV
从内存单元读取数据到CPU寄存器(LOAD

从CPU寄存器写数据到内存单元(STORE

进栈操作(PUSH
出栈操作(POP

②算术和逻辑运算

③移位操作

算术移位、逻辑移位、循环移位

④转移操作

无条件转移(JMP):在任何情况下都执行转移操作

⑤输入输出操作

这类指令用于完成CPU与外部设备交换数据或传送控制命令及状态信息。

二、指令的寻址方式

确定本条指令的数据地址及下一条待执行指令的地址的方法。

1.指令寻址

①顺序寻址

通过程序计数器PC + 1 (1条指令的长度),自动形成下一条指令的地址

②跳跃寻址

通过转移类指令实现。“跳跃”是指本条指令给出下条指令地址的计算方式,而是否跳跃可能受到状态寄存器的控制。

跳跃的方式

        ①绝对转移:地址码直接指出转移目标地址

        ②相对转移:地址码指出转移目的地址相对于当前PC值的偏移量

由于CPU总是根据PC内容去主存取指令的,因此转移指令执行的结果是修改PC值,下一条指令仍然通过PC给出。

2.数据寻址

数据寻址:确定本条指令的地址码指明的真实地址

第四章 指令系统

               直接寻址,则形式地址的位数决定了可寻址的范围

               寄存器寻址,则形式地址的位数决定了通用寄存器的最大数量。

①隐含寻址

        

第四章 指令系统

优点:有利于缩短指令字长
缺点:要增加存储操作数或隐含地址的硬件。

②立即寻址

指令字中地址字段指出的不是操作数地址,而是操作数本身(用补码表示)
 

第四章 指令系统

                                                #就是立即寻址特征,A就是操作数。
优点:指令执行阶段不访存,执行速度最快
缺点:A的位数限制了立即数的范围。        

③直接寻址

第四章 指令系统

优点:简单,不需要专门计算操作数的地址,指令在执行阶段仅需访存一次。

缺点:A的位数限制了该指令操作数的寻址范围,操作数不易修改。

④间接寻址

地址字段给出的不是操作数的真正地址,而是操作数有效地址所在主存单元的地址,即操作数地址的地址。

第四章 指令系统

⑤寄存器寻址

第四章 指令系统

缺点:寄存器价格昂贵,CPU的寄存器数量有限。

⑥寄存器间接寻址

第四章 指令系统

⑦相对寻址

EA=(PC)+A     A:用补码表示,可正可负;A的位数决定了操作数的寻址范围。

第四章 指令系统

⑧基址寻址

EA= (BR)+A 。

第四章 指令系统

        
        基址寻址是面向操作系统的,内容由操作系统或管理程序确定,主要用于解决程序逻辑空间与存储器物理空间的无关性。在程序执行过程中,基址寄存器的内容不变(作为基地址),形式地址可变(作偏移量)。采用通用寄存器作为基址寄存器时,可由用户决定哪个寄存器作为基址寄存器,但其内容由操作系统确定。

优点:






⑨变址寻址

EA=(IX) + A

其中IX可以是专用变址寄存器,也可以用通用寄存器作为变址寄存器来实现。

变址寄存器是面向用户的,在程序执行过程中,变址寄存器的内容可由用户改变(作为偏移量),形式地址A不变(基地址)
 




第四章 指令系统

        变址面向用户,主要用于数组问题,在变址寻址过程中,变址寄存器的内容由用户设定,在程序执行过程中寄存器内容值可变,A不可变。

基址寻址 变址寻址
有效地址 EA=(BR)+A EA=(IX)+A
访存次数 1 1
寄存器内容 由操作系统或管理程序确定

由用户设定

程序执行过程中值是否可变 不可变 可变
特点 有利于多道程序设计和编制浮动程度 有利于处理数组问题和编制循环程序

⑩堆栈寻址

第四章 指令系统
寄存器堆栈:硬堆栈

第四章 指令系统
从主存划出一段区域:软堆栈

三、程序的机器级代码表示

第四章 指令系统
大题必考难点

第四章 指令系统

第四章 指令系统
指令运转总览

1.常用汇编指令介绍

①相关寄存器

①通用寄存器:以X为结尾的

eg:EAX、EBX、ECX、EDX
 

第四章 指令系统

由于这些通用寄存器的高两位字节和低两位字节可以独立使用,又衍生出一些寄存器的表示

eg:EAX的低两位字节被称为AX,

第四章 指令系统

除了EBP、ESP外,其他几个寄存器的用途是比较任意的。

第四章 指令系统

第四章 指令系统

②Intel和AT&T汇编指令格式对比

Intel格式更符合人们习惯。

第四章 指令系统

③ 常用指令

 (1)数据传送指令

mov指令

将第一个操作数(寄存器的内容、内存中的内容或常数值)复制到第二个操作数(寄存器或内存)

但是不能用于直接从内存复制到内存

第四章 指令系统

push指令

先让ESP减4,再将操作数(立即数、寄存器、主存地址)压入栈

第四章 指令系统

pop指令

让栈顶元素出栈写入(寄存器、主存地址),再让ESP加4

第四章 指令系统

(2)算术和逻辑运算指令
第四章 指令系统
常见的算术运算指令

add/sub

两个操作数执行操作,将结果保存再第一个数中。

第四章 指令系统

inc/dec

操作数自增或自减

第四章 指令系统

imul

带符号乘法指令。一二操作,放一

第四章 指令系统

idvi

带符号整数除法指令。

第四章 指令系统
常见的逻辑运算指令

and/or/xor

指令分别是逻辑与,逻辑或,逻辑异或,用于操作数的位操作数,操作结果放在第一个操作数中。

not

取反,将操作数种每一位都翻转

第四章 指令系统

neg

负指令

第四章 指令系统

shl/shr

逻辑左/右移。第一个表示被操作数,第二个表示指示移动的位数

第四章 指令系统

(3)控制流指令
第四章 指令系统
常见的控制流程指令

jmp

无条件转移指令

第四章 指令系统

jxx

条件转移指令
第四章 指令系统

第四章 指令系统

cmp/test

cmp指令比较两个操作数的值,test指令对两个操作数进行逐位运算

第四章 指令系统

call/ret

分别实现子程序(过程,函数等)的调用及返回

        ①将IP旧值压栈保存,保存在函数的栈帧顶部

        ②设置IP新值,无条件转移至被调用函数的第一条指令

        从函数的栈帧顶部找到旧值,将其出栈并恢复IP寄存器。

2.过程调用的机器级表示

第四章 指令系统

        Q2:如何访问栈帧里面的数据?

        Q3:栈帧内可能包含哪些内容?

先来认识一下两条跳转指令 ret call具体执行的细节:

第四章 指令系统

第四章 指令系统

                1.假如函数中有形参,形参要如何进行工作 —>Q1

第四章 指令系统

第四章 指令系统

第四章 指令系统

第四章 指令系统

第四章 指令系统
函数调用模型总图

3.选择语句的机器级表示

第四章 指令系统
帮助理解的cmp底层实现

第四章 指令系统
举个栗子

第四章 指令系统
汇编语言实现 if语句跳转

第四章 指令系统
if语句跳转另一种实现方式

4.循环语句的机器级表示

第四章 指令系统
条件转移实现循环

第四章 指令系统

四、CISC和RISC的基本概念

对传统的CISC指令系统的测试表明,各种指令的使用频率相差悬殊,大概只有20%的简单指令被反复使用,而80%的复杂指令使用很少,于是人们开始重组80%的那复杂的指令功能,于是RISC随之诞生。

        设计思路:一条指令完成一个复杂的基本功能

精简指令系统计算机 RISC:减少指令种类和简化功能,提高指令的执行速度。
        设计思路:一条指令完成一个基本“动作”,多条指令组合完成一个复杂的基本功能。
 



第四章 指令系统
他俩的区别

        

在题目中如何快速地区分CISC、RISC:

        1^{o} 指令是否定长

        2^{o} 除了Load、store之外,是否还有其他指令访存。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/112289.html

(0)
上一篇 2026-01-19 13:16
下一篇 2026-01-19 13:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信