C=A+B表达式在这三种类型指令集结构上的实现方 法 堆栈 累加器 寄存器 寄存器 (寄存器-存储器) (寄存器-寄存) PUSHA LOADA LOAD RI.A LOAD RIA PUSH B add B ADD RIB LOAD R2, B ADD Store C Store CRI Add r3 r1r2 POP C Store C, R3
C=A+B表达式在这三种类型指令集结构上的实现方 法 堆栈 累加器 寄存器 (寄存器-存储器) 寄存器 (寄存器-寄存器) PUSH A LOAD A LOAD R1,A LOAD R1,A PUSH B ADD B ADD R1,B LOAD R2,B ADD Store C Store C,R1 Add R3,R1,R2 POP C Store C,R3
三种类型指令集结构的优缺点 指令集结 优点 缺点 构类型 堆栈型是一种表示计算的堆栈不能被随机访问,从而很难生 简单模型;指令短小。成有效代码。同时,由于堆栈是瓶颈 所以很难被高效地实现 累加器型减小了机器的内部由于累加器是唯一的暂存器,这种 状态;指令短小 机器的存储器通信开销最大。 寄存器型是代码生成最一般所有操作数均需命名,且显式表示 的模型 因而指令比较长
三种类型指令集结构的优缺点 指令集结 构类型 优点 缺点 堆栈型 是一种表示计算的 简单模型;指令短小。 堆栈不能被随机访问,从而很难生 成有效代码。同时,由于堆栈是瓶颈, 所以很难被高效地实现。 累加器型 减小了机器的内部 状态;指令短小。 由于累加器是唯一的暂存器,这种 机器的存储器通信开销最大。 寄存器型 是代码生成最一般 的模型。 所有操作数均需命名,且显式表示, 因而指令比较长
2.1.2通用寄存器型指令集结构的分类 条早期的计算机中采用堆栈指令集结构和累加器指 令集结构比较多,但现代CPU,通用寄存器型指令 集结构已成为指令集结构的主流,原因:
2.1.2 通用寄存器型指令集结构的分类 早期的计算机中采用堆栈指令集结构和累加器指 令集结构比较多,但现代CPU,通用寄存器型指令 集结构已成为指令集结构的主流,原因:
1.通用寄存器型指令集结构的主要优点 (1)使编译器有效地使用寄存 (2)在表达式求值方面,比其它类型指令集结构 具有更大的灵活性; (3)寄存器可以用来存放变量。 ◆减少存储器的通信量,加快程序的执行速度。 (因为寄存器比存储器快) ◆可以用更少的地址位来寻址寄存器,从而可 以有效改进程序的目标代码大小
1. 通用寄存器型指令集结构的主要优点 (1) 使编译器有效地使用寄存器; (2) 在表达式求值方面,比其它类型指令集结构 具有更大的灵活性; (3) 寄存器可以用来存放变量。 ◆ 减少存储器的通信量,加快程序的执行速度。 (因为寄存器比存储器快) ◆ 可以用更少的地址位来寻址寄存器,从而可 以有效改进程序的目标代码大小
篑 2.CPU需要设置多少个寄存器呢? 主要由编译器使用寄存器的情况来决定 体 为表达式求值保留一些寄存器 为传递参数保留一些寄存器 °用剩下的寄存器来保存变量 狗3.两种主要的指令特性能够将通用寄存器指令集结构 (GPR)进一步细分 (1)ALU指令到底有两个或是三个操作数? ◆有三个操作数的指令:两个源操作数 一个结果操作数
3. 两种主要的指令特性能够将通用寄存器指令集结构 (GPR)进一步细分 (1) ALU指令到底有两个或是三个操作数? ◆ 有三个操作数的指令:两个源操作数 一个结果操作数 2. CPU需要设置多少个寄存器呢? 主要由编译器使用寄存器的情况来决定 • 为表达式求值保留一些寄存器 • 为传递参数保留一些寄存器 • 用剩下的寄存器来保存变量