考研计组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

相关推荐
ka2x1 小时前
订单折扣金额分摊算法|代金券分摊|收银系统|积分分摊|分摊|精度问题|按比例分配|钱分摊|钱分配
java·c语言·c++·python·算法·spring·spring cloud
爱上电路设计5 小时前
有趣的算法
开发语言·c++·算法
窜天遁地大吗喽5 小时前
每日一题~ (判断是否是合法的出栈序列)
c++
yachihaoteng7 小时前
Studying-代码随想录训练营day27| 贪心算法理论基础、455.分发饼干、376.摆动序列、53.最大子序和
c++·算法·leetcode·贪心算法
逸群不凡7 小时前
C++|哈希应用->布隆过滤器
开发语言·数据结构·c++·算法·哈希算法
从后端到QT8 小时前
Qt 基础组件速学 鼠标和键盘事件
c++·qt
quaer8 小时前
使用引用返回类对象本身
开发语言·c++·算法
w_outlier8 小时前
gcc/g++的四步编译
linux·c++·gcc·g++
Navigator_Z8 小时前
C++ //练习 14.39 修改上一题的程序令其报告长度在1至9之间的单词有多少个、长度在10以上的单词又有多少个。
开发语言·c++·算法
一子二木生三火9 小时前
set的应用(C++)
开发语言·c++