《深入浅出计算机组成原理》原理篇(一)笔记
计算机指令:纸带编程
开篇:
CPU:计算机的大脑,Central Processing Unit,中央处理器。硬件角度来看,是一个超大规模的集成电路。软件角度来说,一个执行各种计算和指令(Instruction Code)的逻辑机器。
计算机指令:一种CPU能够识别的语言,也称:机器语言。
不同的CPU能够识别的语言各不相同,所以就形成了计算机指令集(Instruction Set)。
一个计算机程序是由成千上万条指令组成的,但CPU无法一直存放指令,所以计算机程序平时是存储在存储器中的,这种指令存储在存储器中的计算机,我们叫做“存储程序型计算机(Stored-Program Computer)”。
也有非“存储程序型计算机”,例如:Plugboard Computer(插线板计算机),用不同的电线来连接不同的插口和插座,从而来完成各种计算任务。

从编译到汇编,代码变机器码?
将程序翻译成一个汇编语言(ASM,Assembly Language)的程序,这个过程叫做编译(Compiler)。
针对汇编语言,通过汇编器(Assembler)翻译成机器码(Machine Code),机器码是由0和1组成的机器语言,也就是一条条的计算和指令(一串串16进制数字,CPU可识别)。

从高级语言到汇编代码,再到机器码,就是一个日常开发程序,最终变成了 CPU 可以执行的计算机指令的过程。
解析指令和机器码
常见的五种指令:
1、算术类指令:加减乘除,在 CPU 层面,都会变成一条条算术类指令。
2、数据传输类指令:给变量赋值、在内存里读写数据,用的都是数据传输类指令。
3、逻辑类指令:逻辑上的与或非,都是这一类指令。
4、条件分支类指令:日常我们写的“if/else”,其实都是条件分支类指令。
5、无条件跳转指令:写一些大一点的程序,我们常常需要写一些函数或者方法。在调用函数的时候,其实就是发起了一个无条件跳转指令。

上面提到不同的 CPU 有不同的指令集,也就对应着不同的汇编语言和不同的机器码。通过MIPS指令集看看机器码是如何生成的?
MIPS 是一组由 MIPS 技术公司在 80 年代中期设计出来的 CPU 指令集。
MIPS 的指令是一个 32 位的整数,高 6 位叫操作码(Opcode),也就是代表这条指令具体是一条什么样的指令,剩下的 26 位有三种格式,分别是 R、I 和 J。
R 指令是一般用来做算术和逻辑操作,里面有读取和写入数据的寄存器的地址。如果是逻辑位移操作,后面还有位移操作的位移量,而最后的功能码,则是在前面的操作码不够的时候,扩展操作码表示对应的具体指令的。
I 指令,则通常是用在数据传输、条件分支,以及在运算的时候使用的并非变量还是常数的时候。这个时候,没有了位移量和操作码,也没有了第三个寄存器,而是把这三部分直接合并成了一个地址值或者一个常数。
J 指令就是一个跳转指令,高 6 位之外的 26 位都是一个跳转后的地址。
嗯,本章就这么多了。。。。

浙公网安备 33010602011771号