1.2CPU是寄存器的集合体
CPU的四个结构部分中,程序员只需要了解寄存器即可,这是因为程序是把寄存器作为对象来描述的。
首先我们看一下代码清单1-1.这是汇编语言(assembly)编写的程序的一部分。汇编语言采用助记符(memonic)来编写程序,每一个原本是电气信号的机器语言指令都会有一个与其相应的助记符,助记符通常为指令功能的英语单词简写。例如,mov和add分别是数据的存储(move)和相加(addition)的简写。汇编语言和机器语言基本上是一一对应的。着一点和C语言、Java语言等高级编程语言有很大不同,这也是我们使用汇编语言来说明来说明CPU运行的原因。通常我们将汇编语言编写的程序转化成机器语言的过程称为汇编,反之机器语言程序转化成汇编语言程序的过程称为反汇编。
通过阅读汇编语言编写代码,能够了解转化成机器语言的程序的运行清况。从代码清单1-1的汇编语言可以看出,机器语言级别的程序是通过寄存器来处理的。也就是说,在程序员看来“CPU是寄存器的集合体”。至于控制器、运算器和时钟,程序员只需要知道CPU中还有这几部分就足够了。
代码清单1-1中,eax和ebp表示的都是寄存器。汇编语言是80386以上的CPU所使用的语言。eax和ebp是CPU内部的寄存器的名称。内存的存储场所通过地址编号来区分,而寄存器的种类则通过名字来区分。
不同类型的CPU,其内部寄存器的数量、种类以及寄存器存储的数值范围都是不同的。根据功能的不同,我们可以将寄存器大致划分为八类,如表1-1所示。
对程序员来说,CPU是什么呢?如图1-3所示,CPU是具有各种功能的寄存器的集合体。