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

相关推荐
愈努力俞幸运10 分钟前
c++ 头文件
开发语言·c++
~山有木兮22 分钟前
C++设计模式 - 单例模式
c++·单例模式·设计模式
十五年专注C++开发34 分钟前
CMake基础:gcc/g++编译选项详解
开发语言·c++·gcc·g++
HUN金克斯1 小时前
C++/C函数
c语言·开发语言·c++
慢半拍iii1 小时前
数据结构——F/图
c语言·开发语言·数据结构·c++
iceslime2 小时前
旅行商问题(TSP)的 C++ 动态规划解法教学攻略
数据结构·c++·算法·算法设计与分析
虾球xz2 小时前
CppCon 2015 学习:3D Face Tracking and Reconstruction using Modern C++
开发语言·c++·学习·3d
small_wh1te_coder3 小时前
c语言超详细知识点总结 1500行手写源码 持续更新中ing 从25年5月到6月5日
c++·c
SteveDraw5 小时前
C++动态链接库封装,供C#/C++ 等编程语言使用——C++动态链接库概述(总)
开发语言·c++·c#·封装·动态链接库
十五年专注C++开发5 小时前
设计模式之单例模式(二): 心得体会
开发语言·c++·单例模式·设计模式