编译技术对指令系统的影响 指令是编译器的工作结果 早期的指令系统主要考虑如何便于编程 编译器的影响 寄存器分配 ■堆栈用于存放局部变量,全局数据区用于存放静 态数据,堆用于存放动态数据。 寄存器分配要考虑一致性问题,可以被 aliased的 数据不能分配在寄存器中(C中的 volatile n为使编译器有效使用 graph coloring启发式算法, 至少需要16个通用寄存器 ■规整:所有访存指令都可用所有寻址方式 ■简单:简化 tradeˉofs,允许编译时确定常
编译技术对指令系统的影响 ◼ 指令是编译器的工作结果 ◼ 早期的指令系统主要考虑如何便于编程 ◼ 编译器的影响 ◼ 寄存器分配 ◼ 堆栈用于存放局部变量,全局数据区用于存放静 态数据,堆用于存放动态数据。 ◼ 寄存器分配要考虑一致性问题,可以被aliased的 数据不能分配在寄存器中(C中的volatile)。 ◼ 为使编译器有效使用graph coloring启发式算法, 至少需要16个通用寄存器。 ◼ 规整:所有访存指令都可用所有寻址方式 ◼ 简单:简化trade-offs,允许编译时确定常 量,只提供基本的通用操作
设计指令系统考虑的因素 ■操作种类 操作数 ■堆栈型、累加器型、寄存器型 ■操作数个数和类型 访存操作数的寻址方式:寄存器、立即数 直接、间接 指令编码 ■定长、变长
设计指令系统考虑的因素 ◼ 操作 ◼ 操作种类 ◼ 操作数 ◼ 堆栈型、累加器型、寄存器型 ◼ 操作数个数和类型 ◼ 访存操作数的寻址方式:寄存器、立即数、 直接、间接... ◼ 指令编码 ◼ 定长、变长