深入浅出计算机组成原理:05 | 计算机指令:让我们试试用纸带编程

CPU 的职责

我们常说,CPU 就是计算机的大脑。CPU 的全称是 Central Processing Unit,中文是中央处理器。

硬件 的角度来看,CPU 就是一个超大规模集成电路,通过电路实现了加法、乘法乃至各种各样的处理逻辑。

如果我们从软件工程师的角度来讲,CPU 就是一个执行各种 计算机指令(Instruction Code)的逻辑机器。这里的计算机指令,就好比一门 CPU 能够听得懂的语言,我们也可以把它叫作 机器语言(Machine Language)。

不同的 CPU 能够听懂的语言不太一样。比如,我们的个人电脑用的是 Intel 的 CPU,苹果手机用的是 ARM 的 CPU。这两者能听懂的语言就不太一样。类似这样两种 CPU 各自支持的语言,就是两组不同的计算机指令集,英文叫 Instruction Set。这里面的“Set”,其实就是数学上的集合,代表不同的单词、语法。

编译 -> 汇编 -> 机器码

要让程序在操作系统上跑起来,我们需要把整个程序翻译成一个汇编语言(ASM,Assembly Language)的程序,这个过程我们一般叫编译(Compile)成汇编代码。

针对汇编代码,我们可以再用汇编器(Assembler)翻译成机器码(Machine Code)。这些机器码由 0 和 1 组成的机器语言表示。这一条条机器码,就是一条条的 计算机指令。这样一串串的 16 进制数字,就是我们 CPU 能够真正认识的计算机指令。

计算机指令 - 图1

常见指令

常见的指令可以分成五大类

  • 算术类指令。我们的加减乘除,在 CPU 层面,都会变成一条条算术类指令
  • 数据传输类指令。给变量赋值、在内存里读写数据,用的都是数据传输类指令
  • 逻辑类指令。逻辑上的与或非,都是这一类指令
  • 条件分支类指令。日常我们写的 if/else,其实都是条件分支类指令
  • 无条件跳转指令。写一些大一点的程序,我们常常需要写一些函数或者方法。在调用函数的时候,其实就是发起了一个无条件跳转指令

计算机指令 - 图2