考研计组chap4指令系统

目录

[一、指令格式 155](#一、指令格式 155)

13.操作码+地址码

2.按照地址码数量

(1)零地址指令

(2)一地址指令

(3)二地址指令

(4)三地址指令

(5)四地址指令

3.指令长度

4.操作码长度分类

5.操作类型分类

[二、拓展操作码 158](#二、拓展操作码 158)

[三、指令寻址方式 164](#三、指令寻址方式 164)

1.指令寻址

(1)顺序寻址

(2)跳跃寻址

2.数据寻址

(1)直接寻址

(2)间接寻址

(3)寄存器寻址

(4)寄存器间接寻址

(5)隐含寻址

(6)立即寻址

(7)偏移寻址

1)基址寻址

2)变址寻址

3)相对寻址

[四、机器级代码 183](#四、机器级代码 183)

1.考试要求

(1)只考x86汇编语言

[(2)能看懂C语言 ->汇编语言](#(2)能看懂C语言 ->汇编语言)

(3)汇编语言<-->机器语言

2.指令格式

[3.常见指令 185](#3.常见指令 185)

(1)算数运算

(2)逻辑运算

(3)else

1)数据转移

2)函数调用

3)控制流(实现分支、循环)

[4.AT&T格式 vs Inter 格式 184](#4.AT&T格式 vs Inter 格式 184)

五、机器级表示

[​编辑1.选择语句 189](#编辑1.选择语句 189)

[2.循环语句 190](#2.循环语句 190)

[3.函数调用 191](#3.函数调用 191)

[六、CISC vs RISC 200](#六、CISC vs RISC 200)


一、指令格式 155

13.操作码+地址码

2.按照地址码数量

0、1、2、3、4

(1)零地址指令

不需要操作数的指令

eg:堆栈指令

(2)一地址指令

可隐含另一个操作数在ACC中

(3)二地址指令

对两个操作数进行操作

(4)三地址指令

第三个地址中存放结果

(5)四地址指令

三地址指令+第四个地址存放下一条指令地址

3.指令长度

一条指令所包含的二进制位数,与机器字长无必要关系

if 指令长度 = 机器字长 单字长指令

if 指令长度 = 2机器字长 双字长指令

if 指令长度 = 1/2机器字长 半字长指令

一般指令长度为机器字长的整数倍

4.操作码长度分类

变长 or 定长

5.操作类型分类

**数据传输类 :**进行CPU和内存之间的data传输

**运算类:**算数逻辑运算,移位运算

**程序控制类:**转移指令(jmp无条件转移、jxxx,有条件转移)

二、拓展操作码 158

定长指令字结构+可变操作码

通过高位的特定数值来确定是几位的地址指令

eg 158

指令字长16bit,15条3地址指令,15条2地址指令,15条1地址指令,16条0地址指令

OP A1 A2 A3

0000 ··

0001 ··

···· ··

1110 ··· 15条

(以上为3地址指令)(so第一个位置全为1的为2地址指令)

1111 0000 ···

1111 0001

····

1111 1110 15条

(以上为2地址指令)(so前2个位置全为1的为1地址指令)

1111 1111 0000 ···

1111 1111 0001

···

1111 1111 1110 15条

(以上为1地址指令)(so前3个位置全为1的为0地址指令)

1111 1111 1111 0000

1111 1111 1111 0001

···

1111 1111 1111 1111 16条

tip:只要能区分就停止即可,令前n位为1来进行区分

if 指令长度为n,上一层留下m位,则下一行回有m*2^n个

ATTn:(思考 哈夫曼编码)

①不能短码是长码的前缀

②使用频率较高的指令用短指令表示

三、指令寻址方式 164

1.指令寻址

找下一条指令的操作

(1)顺序寻址

执行当前指令之后PC+"1"

(2)跳跃寻址

设置一个偏移量 PC+偏移量

2.数据寻址

找数据的存储位置的操作

(1)直接寻址

数据码中直接指向内存中的地址

(2)间接寻址

利用内存中的一片区域,在这片区域中存放目标data的地址

(3)寄存器寻址

使用寄存器存放目标data

(4)寄存器间接寻址

使用寄存器存放目标data的地址,还需访存

(5)隐含寻址

另一个操作数隐含在ACC中

(6)立即寻址

指令中就存在着data

(7)偏移寻址

1)基址寻址

存在基址寄存器BR,EA=(BR)+A

2)变址寻址

存在变址寄存器IX,EA = (IX)+EA

3)相对寻址

EA = PC+"1"+A

3.汇总

四、机器级代码 183

1.考试要求

(1)只考x86汇编语言

(2)能看懂C语言 ->汇编语言

常见的指令:循环、选择、函数调用

(3)汇编语言<-->机器语言

结合汇编分析机器指令的格式以及寻址方式、结合chap4

2.指令格式

见一 155

3.常见指令 185

(1)算数运算

add、sub、mul、imul、div、idiv、neg

(2)逻辑运算

and、or、not、xor、shl、shr

(3)else

1)数据转移

mov a,b 将b中值cope到a中

2)函数调用

call、ret

栈由栈帧组成,so push 、pull

3)控制流(实现分支、循环)

jmp、jxxx、cmp、test

4.AT&T格式 vs Inter 格式 184

五、机器级表示

1.选择语句 189

2.循环语句 190

3.函数调用 191

六、CISC vs RISC 200

相关推荐
2401_831824966 小时前
基于C++的区块链实现
开发语言·c++·算法
汉克老师7 小时前
GESP5级C++考试语法知识(六、链表(一)单链表)
c++·链表·单链表·快慢指针·进阶·gesp5级·gesp五级
m0_518019487 小时前
C++与机器学习框架
开发语言·c++·算法
qq_417695057 小时前
C++中的代理模式高级应用
开发语言·c++·算法
学嵌入式的小杨同学7 小时前
STM32 进阶封神之路(十九):ADC 深度解析 —— 从模拟信号到数字转换(底层原理 + 寄存器配置)
c++·stm32·单片机·嵌入式硬件·mcu·架构·硬件架构
xiaoye-duck7 小时前
《算法题讲解指南:动态规划算法--路径问题》--5.不同路径,6.不同路径II
c++·算法·动态规划
ambition202428 小时前
最大子数组和算法全解析:从暴力枚举到动态规划优化
数据结构·c++·算法
qq_461489338 小时前
C++与Qt图形开发
开发语言·c++·算法
小菜鸡桃蛋狗9 小时前
C++——类和对象(上)
开发语言·c++
2401_879503419 小时前
C++中的观察者模式变体
开发语言·c++·算法