程序是如何变成电信号的?

February 25, 2020 • Read: 175 • 技术学习阅读设置

见到了一个有趣的问题:我们知道计算机是一堆晶体管组成的,它也只能运行电信号,那么我们用高级语言编写的程序是如何变成电信号的呢?

首先我们先来看看程序编译运行的简单过程:程序由数据和指令组成的。用高级语言编写完程序后一般是保存在主存(内存)和辅存(硬盘)里。当计算机开始运行一个程序,它首先通过编译器编译成汇编语言,然后由汇编器翻译成机器语言指令,最后通过链接器得到可执行文件。(当然,也可以从高级语言直接翻译到机器语言)
接着系统将程序数据从硬盘中复制到速度更快的主存储器(内存)中,内存与CPU直接沟通,CPU通过不断更新寄存器来获取刚刚复制到内存上的一条条指令。这应该就是微程序对微指令的解释并执行。
程序在内存、CPU里都是电信号。机器语言的文本形式由0和1组成,在计算机内部则通过高低电平表示。

然后就发现难点就在于机器指令是怎么转换成电信号的?它似乎有点顺理成章,又耐人寻味。一开始没想明白,经过网上搜索和翻看教材,才发现这过程实际上从我们敲代码那一刻就开始了。我们看到的各种字母、数字、符号只是表象,实质上当我们在键盘上依次按下按键时,背后是不断的“闭合/断开”一个个“开关”,计算机所做的事情就是把这些有序的“闭合/断开”电信号传送到内存里。也就是说,一切的一切从一开始就是电信号了。 之后,上面所说的一切编译、翻译、链接,都是在把内存里的这批电信号简化、移动而已。
学习知识需思考,——“要多想。”
我还远未够班啊。

Last Modified: June 30, 2020