《计算机的组成与设计》笔记 02 - 指令:计算机的语言

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/engrossment/article/details/93408135

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

展开阅读全文

没有更多推荐了,返回首页