《程序是怎样跑起来的》第一章读后感悟
CPU 是负责解释和运行最终转换成机器语言的程序内容。
内存或主存是通过控制芯片与 CPU 相连,负责存储指令和数据。
主存有可读写的元素构成,每个字节带有一个地址编号(1字节=8个位),CPU 通过该地址读取内存,或写入数据。
这四个部门是通过电流信号相互连通的。
寄存器可以用来暂存指令、数据等处理对象,可以看做是内存。一个 CPU 有20-100个寄存器。
控制器把内存上的指令、数据读入寄存器,根据指令来控制整个计算机。
运算器运算从内存读入到寄存器中的数据。
时钟发出 CPU 开始计时的时钟信号。根据时钟信号,控制器会从内存中读取指令和数据。
控制器的控制是数据运算以外的处理,数据输入输出的实际控制。比如,内存和磁盘等媒介的输入输出,键盘和鼠标的输入显示器和打印机的输出。
CPU 是寄存器的集合体。
汇编语言与机器语言一一对应。把汇编语言编写的程序转化成机器语言的过程称为汇编,语言程序转换成汇编语言程序的过程则是反汇编。
把汇编语言转化成机器语言的程序称为汇编器,有时汇编语言也称为汇编。
高级编程语言是指能够使用人类的语言来记述的编程语言的总称,c、basic、c++。使用高级编程语言编写的程序,经过编译转换成机器语言后才能运行。
与高级编程语言相对,机器语言和汇编语言称为低级编程语言。
内存的存储场所通过地址编号来区分,寄存器的种类通过名字来区分。
使用高级语言编写的程序会在编译后转化为机器语言,然后通过 CPU 内部的寄存器来处理。
编译是使用高级编程语言编写的程序转换为机器语言的过程,用于转换的程序被称为编译器。
控制器从内存中读取指令,存取到寄存器中,运算器把寄存器中的指令和数据加以运算,然后由控制器在把结果存入内存。
不同类型的 CPU,对应多种不同类型的寄存器来实现不同的功能。根据功能划分,寄存器大致可以划分为8类,其中程序计数器、累加期存器、标志寄存器、指令寄存器、栈寄存器只有一个,其他有多个。
程序员眼中的 CPU 是寄存器的集体。决定程序流程的程序计数器(寄存器的一种)。存储指令和数据的内存,是通过内存地址来划分。实际上一个命令和数据通常被存储在多个地址上,当执行的指令占据多个内存地址后,增加与指令长度相应的数值。CPU 的控制器,会按照程序计数器的数值,从内存中读取命令并执行,程序计数器决定这程序的流程。