- 豆瓣读书:https://book.douban.com/subject/26604008/
- 《计算机组成与设计 - 硬件/软件接口》,Computer Organization and Design - The Hardware/Software Interface,原书第五版。
2.1 引言
- 指令集是指一个给定的计算机体系结构所包含的指令集合。而指令,是计算机语言中的基本单词。
- 硬件设计原则
- 简单源于规整
- 越小越快
- 优秀的设计需要适宜的折中方案
2.2 计算机硬件的操作
- 选定的指令操作码 + 寄存器 + 立即数或地址。
2.3 计算机硬件的操作数
- 寄存器:由硬件直接构建且数量有限,是计算机硬件设计的基本元素。
- 基于数据传送操作码和地址进行存储器数据操作。
- 或者基于立即数操作码进行常数操作。
2.4 有符号数和无符号数
- 为了表示与运算方便,整型数字使用二进制补码的形式进行表示。所有前导位为 0 表示正数,为 1 表示负数。
2.5 计算机中指令的表示
- 一个指令由多个字段组成,所占位数统一为 32 位。
- op:操作码。
- rs:第一个源操作数寄存器。
- rt:第二个源操作数寄存器。
- rd:用于存放操作结果的目的寄存器。
- shamt:位移量。
- funct:功能码。
2.6 逻辑操作
- 与算术运算对应的另一类指令。如左移、右移、按位与、按位或、按位或非。
2.7 决策指令
- 第三类指令是用于流程控制,如大小判断、跳转。
2.8 计算机硬件对过程的支持
- 过程:根据提供的参数执行一定任务的存储的子程序。
- 程序调用与返回的指令级别的实现,涉及程序计数器(指令地址寄存器)、栈空间使用、堆空间使用。
2.9 人机交互
- 对字符的编码,ASCII、Unicode。
2.10 MIPS 中 32 位立即数和寻址
- 由于前面讲解的立即数操作指令达不到操作 32 位立即数的效果(操作码自身需要暂用 6 位),MIPS 提供了专门的读取立即数高位指令,对 32 位立即数进行分批读取。
- 5 种寻址模式
- 立即数寻址:操作数为指令中的常数。
- 寄存器寻址:操作数位于寄存器。
- 基址寻址:操作数位于内存,地址为基址寄存器加指令中的常数。
- PC 相对寻址:内存中的操作数的地址为 PC + 指令中的常数。
- 伪直接寻址:内存中的操作数的地址为指令中的常数与 PC 高位相连而成。
2.11 并行与指令:同步
- 提供链接取数、条件取数等特殊指令实现同步原语。
2.12 翻译并执行程序
- C 语言翻译并执行的 4 个阶段:编译、汇编、链接、加载。
2.13 以一个 C 排序程序作为完整的例子
2.14 数组与指针
2.15 高级内容:编译 C 语言与解释 Java 语言
2.16 实例:ARMv7(32 位)指令集
2.17 实例:x86 指令集
2.18 实例:ARMv8(64 位)
2.19 谬误与陷阱
- 谬误:更强大的指令意味着更高的性能。
- 谬误:使用汇编语言编程来获得最高的性能。
- 陷阱:忘记在字节寻址的机器中,连续的地址相差不是 1。
2.20 本章小结
2.21 历史观点和拓展阅读
2.22 练习题
廖杰良 - 2019-06-23