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

相关文章
408王道计算机组成原理强化——输入输出系统大题(I/O)
408王道计算机组成原理强化——输入输出系统大题(I/O)
713 1
408王道计算机组成原理强化——输入输出系统大题(I/O)
|
算法 网络虚拟化 内存技术
408王道计算机组成原理强化——存储系统大题
408王道计算机组成原理强化——存储系统大题(下)
3922 3
408王道计算机组成原理强化——存储系统大题
|
算法 调度 开发者
深入理解操作系统:进程与线程的管理
在数字世界的复杂编织中,操作系统如同一位精明的指挥家,协调着每一个音符的奏响。本篇文章将带领读者穿越操作系统的幕后,探索进程与线程管理的奥秘。从进程的诞生到线程的舞蹈,我们将一起见证这场微观世界的华丽变奏。通过深入浅出的解释和生动的比喻,本文旨在揭示操作系统如何高效地处理多任务,确保系统的稳定性和效率。让我们一起跟随代码的步伐,走进操作系统的内心世界。
188 2
|
算法 Linux 调度
深入浅出操作系统之进程管理
【8月更文挑战第28天】本文将通过浅显易懂的方式介绍操作系统中的核心概念——进程管理。我们将从进程的基本定义出发,逐步深入到进程的生命周期、状态转换以及调度策略。文章旨在为读者提供一个清晰的进程管理框架,帮助理解操作系统如何高效地管理和调度进程,确保系统的稳定运行和资源的合理分配。通过本文的学习,读者能够对操作系统中的进程管理有一个全面而深入的认识。
|
存储 程序员
408王道计算机组成原理强化——指令系统及大题解构(下)
408王道计算机组成原理强化——指令系统及大题解构
669 1
408王道计算机组成原理强化——指令系统及大题解构(下)
|
存储 内存技术
408王道计算机组成原理强化——存储系统大题(上)
408王道计算机组成原理强化——存储系统大题
1600 2
408王道计算机组成原理强化——存储系统大题(上)
|
内存技术
408王道计算机组成原理强化——中央处理器及大题解构(上)
408王道计算机组成原理强化——中央处理器及大题解构
1139 1
408王道计算机组成原理强化——中央处理器及大题解构(上)
|
存储
408计算机组成原理学习笔记——指令系统(下)
408计算机组成原理学习笔记——指令系统
452 1
408计算机组成原理学习笔记——指令系统(下)
|
存储 算法 搜索推荐
408王道数据结构强化——应用题(三)
408王道数据结构强化——应用题
663 1
408王道数据结构强化——应用题(三)

热门文章

最新文章