CPU是英文Central Processing Unit(中央处理器)的缩写,相当于计算机的大脑,它的内部由数百万至数亿个晶体管构成,这些都是大家所熟知的。不过,对CPU的了解如果只限于此的话,对编程是没有任何帮助的。程序员还需要理解CPU是如何运行的,特别是要弄清楚负责保存指令和数据的寄存器的机制。了解了寄存器,也就自然而然地理解了程序的运行机制。可能有很多读者会认为CPU的运行机制比较难,其实它非常简单。
CPU的四个构成部分中,程序员只需了解寄存器即可,其余三个都不用太过关注。那么,为什么必须要了解寄存器呢?这是因为程序是把寄存器作为对象来描述的。
CPU的构成部分正如下图所示:
首先我们来看一下代码清单1-1。这是用汇编语言(assembly)编写的程序的一部分。汇编语言采用助记符(memonic)来编写程序,每一个原本是电气信号的机器语言“指令都会有一个与其相应的助记符,助记符通常为指令功能的英语单词的简写。例如,mov和add分别是数据的存储(move)和相加(addition)的简写。汇编语言和机器语言基本上是一一对应的。这一点和C语言、Java语言等高级编程语言”有很大不同,这也是我们使用汇编语言来说明CPU运行的原因。通常我们将汇编语言编写的程序转化成机器语言的过程称为汇编;反之,机器语言程序转化成汇编语言程序的过程则称为反汇编。
编程语言及汇编语言编写的程序示例:
①把汇编语言转化成机器语言的程序称为汇编器(assembler)。有时汇编语言也称为汇编。详情可参阅第10章。
②机器语言是指CPU能直接解释和执行的语言。
③高级编程语言是指能够使用类似于人类语言(主要是英语)的语法来记述
的编程语言的总称。BASIC、C、C++、Java、Pascal、FORTRAN、COBOL等语言都是高级编程语言。使用高级编程语言编写的程序,经过编译转换成机器语言后才能运行。与高级编程语言相对,机器语言和汇编语言称为低级编程语言。
寄存器的种类及功能:
对程序员来说,CPU是什么呢?CPU是具有各种功能的寄存器的集合体。其中,程序计数器、累加寄存器、标志寄存器、指令寄存器和栈寄存器都只有一个,其他的寄存器一般有多个。程序计数器和标志寄存器比较特殊,这一点在后面的章节中会详细说明。另外,存储指令的指令寄存器等寄存器,由于不需要程序员做多关注,如图: