指令
计算机指令也就是机器码,是可以被计算机执行的数据。那指令是如何产生的? 指令是被定义出来的。比如我们假定1101对应的指令的LDA(加载内存数据到A寄存器)。那接下来我们要做的是需要改造指令控制器,让它能够接受到1001指令时按预定设计输出各个计算机部件的控制信号,最终完成某个动作。
因此指令能完成的动作也是由组成计算机的硬件限定的,比如只有加法器的计算机无法直接完成乘法计算,但是乘法可以通过加法累加一定次数完成。这也是算法或者是软件的魅力,复杂的计算可以通过算法进行简化为更低阶的计算。当然也可以直接通过硬件电路直接实现乘法运算。
汇编语言
汇编语言是最靠近机器码的语言,我认为它本质上就是对机器码的一个封装,让我们能够以更人类的表示方式来编程(当然现在应该很少用汇编语言来写程序了)。通过汇编语言编写的程序计算机无法理解,因此需要将汇编语言翻译成机器码,这也是汇编编译器做的工作。当没有汇编编译器的时候我们如何工作? 先用我们好理解的且计算机能支持的助记符来代表机器码,比如计算机中的指令控制器设定1001为表示从内存地址加载数据到A寄存器,那可以写作LDA xxxx。之后再通过查表的方式得到该指令对应的机器码,输入到计算机的内存即可。
程序代码、语言
BIOS,操作系统,编译器,或者我们自己写的脚本、工具都可以称为程序代码。编译器是一种比较特殊的程序,它能将高级语言翻译成低级的机器码。因此编译器和语言可以自我迭代。当我们需要花很多时间将助记符手动转换为机器码时,汇编编译器产生了。并且用机器码编写好第一个汇编编译之后。就可以使用它来编译汇编语言了,当然也包括用汇编语言重写自身(感觉好神奇)。 一段时间后感觉汇编太难写了,于是有人用发明了更高级的语言,并用汇编语言给它编写了第一个高级语言编译器,之后便可以写高级语言了,同时还可以用高级语言重写这个高级语言编译器,当然还包括之前的汇编编译器。
操作系统
操作系统也是一种程序,它是为了我们更方便的使用电脑的各个部件完成我们的工作。只不他是那个我们每次启动计算机自动加载运行的系统程序。因此它的重要性不言而喻。可以想象,一个操作系统不太可能运行在所有的硬件平台上,他们之前存在着一定的兼容性关系, 而现在开发的一般程序都是拟定在某个或某些操作系统下运行的。 硬件平台和操作系统这两者也组成了程序的运行的底层建筑。