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

相关推荐
Elias不吃糖5 小时前
epoll 事件全集、每个事件的含义、哪些事件在实际服务器中最常见、哪些会组合出现
linux·c++·event
AA陈超5 小时前
ASC学习笔记0017:返回此能力系统组件的所有属性列表
c++·笔记·学习·ue5·虚幻引擎
Unlyrical6 小时前
splice, io_uring_prep_splice 调用(无效参数)
linux·服务器·c++·unix
Lucis__7 小时前
STL设计模式探秘:容器适配器&仿函数
c++·容器·stl·仿函数
无敌最俊朗@7 小时前
C++ 对象布局之padding(填充字节)
开发语言·c++
小龙报7 小时前
《DevC++支持C++11等与其软件分辨率低的解决办法》
c语言·c++·windows·蓝桥杯·pat考试·学习方法·dvc++
大佬,救命!!!8 小时前
C++函数式策略模式中配置修改
c++·学习笔记·迭代加深·企业级·函数式策略模式·多文件编译环境·json环境配置修改
Chiang木8 小时前
C++进阶:coroutine 协程
开发语言·c++·协程
蕓晨8 小时前
数据结构 图 的邻接表建立
数据结构·c++
渡我白衣8 小时前
深入 Linux 内核启动:从按下电源到用户登录的全景解剖
java·linux·运维·服务器·开发语言·c++·人工智能