第2章 计算机和汇编语言
第2章重点介绍了寄存器(Register)、内存(Memory)和指令(Instruction)、指令集(Instruction set)、字节(Byte)等基本概念,然后引出了为什么要发明汇编语言(Assembly)。
一些知识点:
- 寄存器(Register)就是01电路的封装,可以在通电情况下暂存数据。1个寄存器可以封装若干个01电路,比如16个、32个、64个,就是我们常说的16位、32位、64位。
看到有些地方也把寄存器称作暂存器,其实也是这个意思。
- 多个寄存器和运算电路(ALU)就可以实现加减乘除运算。
- 指令(Instruction)其实就是01开关的组合,通过01开关,指定机器要执行的操作。
- 内存就是存储指令和数据的容器,计算机的运行就是从内存中取出指令、分析指令、运行指令。
计算机的内存是以字节为单位的,也就是说1个单位可以存储8个bit。一开始学习计算机的时候习惯最小比特,到内存时有点转不过来。
- 内存是通过地址线进行寻址的,寻址空间大小是通过地址线的数量来决定的。
200x年那会,工作的电脑是4GB的内存,想着电脑内存太小了,于是又插了一根1GB的内存条,发现没用。后来才知道当时的CPU是奔腾系列,32位的,只能支持2^32=4GB的内存。太囧了。
- 除了地址线,内存还有读写控制线和数据线:读写控制线用来控制从内存读还是写;数据线用来传输数值。
- 指令指针寄存器存储的数值就是内存的地址,从这个地址执行指令,执行完这一条指令,跳转到下一条执行。从而可以实现自动执行预先编写好的程序(Program)。
- 处理器(Processor)就是把寄存器(Register)、运算器(Arithmetic Logic Unit,ALU)、控制器(Control Unit, CU)集中在一起形成统一的部件,也称中央处理器(Central Processing Unit, CPU)。
处理器这个东西真的很神奇,能把这么多复杂的电子元器件安装在指甲盖大小的电路板上。B站经常看到CPU放大之后的图片,着实壮观。
图片来源于:☢️放大64亿倍⚠️我用【MC】把芯片变成了城市⚡_哔哩哔哩_bilibili
- 计算机能执行的都是01的数据,如果用01来编程会崩溃,所以就有了汇编,通过mov、add这样容易记的指令来替代二进制指令。既然用了助记符来方便编程,自然要有编译器把这些助记符翻译成处理器可以执行的01代码了。
从01编程到汇编、再到C语言、Java、Python等,如果说汇编解决了01的烦恼,那么C语言就是解决了和硬件设备打交道的烦恼,Java或其他语言解决了内存回收的烦恼等等。不得不感叹大佬们的智慧。