408王道计算机组成原理强化——指令系统及大题解构(上)

简介: 408王道计算机组成原理强化——指令系统及大题解构

1.大纲要求

1.1.指令格式

9df79f26924b4280aad17c8667341e55.png

1.一条指令由操作码和若干操作数组成:

①操作码:这条指令的动作(加/减/乘/除/移位等等)

②操作数:该动作的参数(寻址方式位 + 形式地址)

2.扩展操作码:短操作码不能是长操作码的前缀(类似DS的哈夫曼树,CN的变长子网划分)

1.2.寻址方式c392f50fa52a484b812ee94fc38dc974.png

1.有效地址:即最终要访问的虚拟地址(PC→虚拟地址,MAR→物理地址)

2.①操作数在指令中以形式地址的方式给出

②CPU根据寻址方式将形式地址转换为有效地址(虚拟地址,存放在PC)

③通过TLB/页表将虚拟地址转换为物理地址(存放在MAR)

④通过Cache/内存访问物理地址

3.①隐含寻址:操作数默认在某个寄存器中或在栈顶,即无需指明操作数在何处(POP指令)6f2f7b8587e94d1385f8e2a8021552af.png

②立即寻址:指令中给出立即数,例如OP 10086,即对10086进行某种操作

09040feec09249c58fb13944b5bcd156.png

③直接寻址:操作数给出的地址就是最终的有效地址(例:OP 指针,对某数据进行某种操作,并给出该数据的指针)e900a6fee404421cba2d7435fdf24921.png

④一次间接寻址:OP 指针的指针,根据指针A找到该操作数的指针B,再通过该指针B找到操作数a8ecb211a225487e89e84e0fcadea7d2.png

⑤寄存器寻址:87734f7743c64e1088cc4b6e8c1ac434.png

⑥寄存器间接寻址:相当于指针存在寄存器中

b53de420bc724e9492a5b83297410982.png

相对寻址:转移指令,EA = (PC)+ A

1.PC的内容加上指令中形式地址A形成操作数的有效地址,即EA = (PC)+ A(A为相对于PC的偏移量,正负都可,用补码表示)

2.PC在取出使用相对寻址的指令时,就会进行+ “1”操作,即相对寻址是相对于下一条指令的存放地址的偏移量("1"的大小取决于当前正在执行指令的指令字长)

3.优点:无论代码被放在什么位置,都不用更改跳转指令的地址码(若使用直接寻址的方式,则每次都需要更改)便于程序浮动(一段代码在程序内部浮动),广泛被用于转移类指令

⑧基址寻址:

1.基址寄存器中存放的是当前程序的首地址(基地址,运行中基址寄存器中的内容不变,形式地址作为偏移量可变

2.基址寄存器可以是专用,也可以是指定一个通用寄存器(需要在指令中指明是哪个通用寄存器)

3.便于程序浮动(整段程序在内存中的浮动),多道程序并发运行(仅需修改基址寄存器的内容实现不同程序的正确寻址,相较于直接寻址,直接寻址需要修改每条指令的地址;OS动态分配中,每个程序占有连续的内存空间,可以通过基址寄存器记录每个程序在内存中的起始地址,通过偏移量的改变得到正确的地址);可以增加寻址范围(基址寄存器的位数大于形式地址位数,但由于形式地址决定偏移量,因此偏移量有限)

4.基址寄存器面向操作系统(用户可以决定使用哪个基址寄存器,但内容由操作系统决定)

⑨变址寻址:

1.变址寄存器中的内容(可变)作为偏移量,形式地址A(不变)作为基地址(与基址寻址刚好相反):可以通过不断的改变变址寄存器中的内容,访问数组中的元素,因此适合循环程序

2.变址寄存器可以是专用,也可以是指定一个通用寄存器(需要在指令中指明是哪个通用寄存器)

3.变址寄存器面向用户(用户可以修改变址寄存器的内容)

⑩堆栈寻址:

1.操作数存放在堆栈中,隐含使用堆栈指针(SP:Stack Pointer)作为操作数地址

2.堆栈指针存在专门的寄存器中,其指向栈顶元素

①专用寄存器:不同情况下对SP的操作顺序和操作方式不同(参考数据结构栈),取指令需访存,执行指令无需访存8e8401b3cd1d41c0a1c31f151f403352.png

②主存中开辟堆栈空间:每次操作都需要进行访存

1.3.数据对齐和大小端存放方式683e9a7cf71c41a2a31e81712a87b522.png

1.4.CISC和RISC

9ffb668992524bad93b2bf979a6dd6f2.png

判断是CISC/RISC:①指令字长是定长→RISC ②有除LOAD/STORE外指令访存→CISC

1.5.高级语言程序与机器级代码间对应

44c3b39d6be24920baa544582c00160f.png

1.高级语言(C)经过编译器的编译后形成汇编语言

2.汇编语言和机器语言指令一一对应:一条汇编语言对应一条机器语言指令

3.汇编语言经过汇编器的编译后形成机器语言(010101)

4.链接器:把各个机器语言指令的模块(主函数和库函数)连接起来形成一个完整的地址空间

5.机器级代码:

①if - else、switch(条件转移指令):cmp a,b;        jxxx(je、jle、jg、jge) xxxx

②goto(无条件转移指令):jump xxxx

相关文章
|
10月前
王道408计组汇编语言部分学习总结
用于实现分支结构、循环结构的指令: cmp、 test、 jmp、 jxxx 用于实现函数调用的指令: push、pop、call、 ret 用于实现数据转移的指令: mov
383 0
408王道计算机组成原理强化——输入输出系统大题(I/O)
408王道计算机组成原理强化——输入输出系统大题(I/O)
325 1
408王道计算机组成原理强化——输入输出系统大题(I/O)
|
算法 网络虚拟化 内存技术
408王道计算机组成原理强化——存储系统大题
408王道计算机组成原理强化——存储系统大题(下)
1699 2
408王道计算机组成原理强化——存储系统大题
|
存储
【软考:软件设计师】 2 计算机组成与体系结构(二)详解指令系统 | 指令流水线
【软考:软件设计师】 2 计算机组成与体系结构(二)详解指令系统 | 指令流水线
231 0
|
2月前
|
存储 知识图谱
【计算机组成原理】指令系统&考研真题详解之拓展操作码!
也就是说 “其中三地址指令29”条这句话,完全可以翻译成“三地址这种类型的指令一共能有29种不同的可能性” 这样说就清晰多 因为这就意味着 我们需要用若干个字节 来表示这29种不同的可能性 然后又已知每一个字节位能表示的可能性是2种(0/1),那么我们想有多少个字节可以表示29种不同的可能呢?最少5种 (因为2的4次方=16<29),2^5=32>29,也就是说有32-29=3种可能性是不在三地址指令这种类型的指令集里面的,所以这3 种余出来的可能性要被利用 就在下一种 “二地址指令集”中利用到
24 0
|
存储 编译器 C语言
计算机底层知识之汇编语言
汇编语言和本地代码是一一对应的 推荐阅读指数⭐️⭐️⭐️⭐️⭐️ 不会转换成本地代码的伪指令 推荐阅读指数 ⭐️⭐️⭐️ 汇编语言的语法是操作码 + 操作数 推荐阅读指数⭐️⭐️⭐️⭐️⭐️ mov指令 推荐阅读指数 ⭐️⭐️⭐️ 对栈进行push 和 pop 推荐阅读指数 ⭐️⭐️⭐️ 函数调用机制 推荐阅读指数 ⭐️⭐️⭐️⭐️⭐️ 函数内部的处理 推荐阅读指数 ⭐️⭐️⭐️⭐️⭐️ 全局变量用的内存空间 推荐阅读指数 ⭐️⭐️⭐️ 循环处理的实现方法 推荐阅读指数 ⭐️⭐️⭐️⭐️⭐️
计算机底层知识之汇编语言
|
存储 Java Unix
程序员必知必会之计算机系统概论
程序员必知必会之计算机系统概论
88 0
计算机组成原理/计算机硬件基础第六章:指令系统
计算机组成原理/计算机硬件基础第六章:指令系统
348 0
计算机组成原理/计算机硬件基础第六章:指令系统
|
算法 编译器 数据格式
计算机组成原理/计算机硬件基础 第四章
计算机组成原理/计算机硬件基础 第四章
190 0
计算机组成原理/计算机硬件基础 第四章
|
存储 固态存储 数据安全/隐私保护
计算机组成原理/计算机硬件基础第五章:存储器
计算机组成原理/计算机硬件基础第五章:存储器
425 0
计算机组成原理/计算机硬件基础第五章:存储器