01 Introduction

让硬件工作需要讲让硬件听得懂的语言,这就是指令(instructions),对应词汇称为指令集(instruction set)。这一章会以自顶向下的方式介绍指令集。

和自然语言不同,硬件的语言都很相似,学习了一种之后很快可以学些其他语言。这里我们选择 RISC-V 指令集作为学习对象。

为了表明可以快速学习其他指令集,这一章会快速介绍下面两种指令集: * MIPS,和 RISC-V 遵循类似的设计; * x86,Intel 在上世纪 70 年代设计的;

指令集相似的原因是硬件设计遵循相同的原则,同时很多操作是所有硬件所必须的。此外,有一个久负盛名、历史悠久的设计目标:寻找一个语言使得更容易构建硬件,编译器能尽可能的做优化以减少运行时间和能量消耗。

本章介绍的指令集也遵循这些基本原则,并且展现其如何表示硬件的,以及高级语言(这里用 C 语言)和其的关系。

在学习如何表示指令的过程中,会学习“存储程序概念”这个重要概念。这一章还会介绍程序语言和编译器优化对性能的影响。