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)
407 1
408王道计算机组成原理强化——输入输出系统大题(I/O)
|
算法 网络虚拟化 内存技术
408王道计算机组成原理强化——存储系统大题
408王道计算机组成原理强化——存储系统大题(下)
2335 2
408王道计算机组成原理强化——存储系统大题
|
存储
【软考:软件设计师】 2 计算机组成与体系结构(二)详解指令系统 | 指令流水线
【软考:软件设计师】 2 计算机组成与体系结构(二)详解指令系统 | 指令流水线
279 0
|
6月前
|
存储 知识图谱
【计算机组成原理】指令系统&考研真题详解之拓展操作码!
也就是说 “其中三地址指令29”条这句话,完全可以翻译成“三地址这种类型的指令一共能有29种不同的可能性” 这样说就清晰多 因为这就意味着 我们需要用若干个字节 来表示这29种不同的可能性 然后又已知每一个字节位能表示的可能性是2种(0/1),那么我们想有多少个字节可以表示29种不同的可能呢?最少5种 (因为2的4次方=16<29),2^5=32>29,也就是说有32-29=3种可能性是不在三地址指令这种类型的指令集里面的,所以这3 种余出来的可能性要被利用 就在下一种 “二地址指令集”中利用到
116 0
|
存储 Java Unix
程序员必知必会之计算机系统概论
程序员必知必会之计算机系统概论
102 0
|
存储 程序员
408王道计算机组成原理强化——指令系统及大题解构(下)
408王道计算机组成原理强化——指令系统及大题解构
303 1
408王道计算机组成原理强化——指令系统及大题解构(下)
|
内存技术
408王道计算机组成原理强化——中央处理器及大题解构(上)
408王道计算机组成原理强化——中央处理器及大题解构
725 1
408王道计算机组成原理强化——中央处理器及大题解构(上)
|
人工智能
408王道计算机组成原理强化——中央处理器及大题解构(下)
408王道计算机组成原理强化——中央处理器及大题解构
1006 1
408王道计算机组成原理强化——中央处理器及大题解构(下)
|
存储 内存技术
408王道计算机组成原理强化——存储系统大题(上)
408王道计算机组成原理强化——存储系统大题
980 2
408王道计算机组成原理强化——存储系统大题(上)
408王道计算机组成原理强化——数据的运算及大题(下)
408王道计算机组成原理强化——数据的运算及大题
581 1
408王道计算机组成原理强化——数据的运算及大题(下)

热门文章

最新文章