python语言翻译成汇编语言_计原 || 1计算机语言发展与计算机层次结构

24f4773bc86ce7fc997b432bde394049.png

 本文主要内容:计算机语言发展与计算机层次结构

约1500字

    早期的计算机,只有机器语言

机器语言,就是直接用0、1代码表示的语言,用户必须用0和1来编写程序,用二进制的代码来表示一切需求

    这对程序员的要求很高,他们必须对计算机的硬件配置和指令系统非常熟悉,才能写出能正确在机器上执行的指令

比如,当你想打印输出ax+b的结果

首先,你要知道计算机的指令集中,取数操作的操作码、乘操作的操作码、加操作的操作码、存数操作的操作码、打印操作的操作码各是多少

然后,你要知道x、a、b在计算机主存中的地址编号各是多少

接着,你要知道计算机的指令字长是多少,从而得出要写的指令

如果取数操作的操作码为000001,数据x在主存的8号位置,机器指令字长为16位

那么你要表示“取数x”,需要写出指令:0000010000001000

(说明:指令字长16位减去6位操作码,还剩下10位作为地址码。地址号8转换为二进制是1000,补全到10位为0000001000)

    显然,这不仅难度很大,而且在写的过程中也很容易出错,非常麻烦

    但是唯物主义辩证法告诉我们,凡事都有两面性。用机器语言编程还是有好处的,好就好在把程序交给机器后就可以直接执行,不需要翻译或编译

注意:实际机器是只看得懂二进制代码(即0和1)的

    20世纪50年代,汇编语言出现了

汇编语言中开始用符号表示操作,比如加操作用ADD表示,乘操作用MUL表示,指令或数据所在存储单元的地址也用符号表示

    此时程序员编程就比用机器语言简单多了

    但是,我在上面提到过了:机器只能看懂二进制代码,即机器语言

    所以,汇编语言写出来的程序,必须被“翻译”成机器语言,再交给机器执行。这个翻译的过程是由机器中的汇编程序完成的

    此时,一台计算机可以被看成是由两台机器构成:程序员把写好的汇编语言程序送给上层的机器M2,M2中的汇编程序将其翻译成机器语言程序后,送给下层的机器M1,机器语言程序在M1中可以直接执行

    请读者注意区分“汇编语言程序”和“汇编程序”,二者是不同的,“汇编程序”的作用是把汇编语言程序翻译成机器语言程序

    这里所说的的M2并不是一台实际的机器,只是从外界看来,仿佛存在这么一台具有翻译功能的机器,我们称之为虚拟机器

     汇编语言虽然大大提高了编程体验,但从本质上看,它仍然是面向机器的,每一条语句都和机器语言一一对应。它对程序员的要求还是很高,而且还是依赖于机器的硬件和指令系统构成,在不同机器之间没有通用性

    20世纪60年代,出现了面向问题的高级语言

    现在大家耳熟能详的C++、python、Java等都是高级语言。用高级语言写出的程序,就是经常人们听到的源程序

    同样地,高级语言最终也需要被翻译成机器语言才能被机器执行,由此我们又衍生出新一层虚拟机器M3——用户将编写好的高级语言程序输入给M3,M3把高级语言翻译成汇编语言输入M2,或直接翻译成机器语言输入M1

    将高级语言翻译成机器语言是由翻译程序完成的,翻译程序又分为两种:编译程序解释程序。编译程序是将源程序全部翻译完后再交给M1执行,翻译程序是翻译一句执行一句

    此时可以看到,随着软件和计算机科学的发展,实际机器M1向上延伸出了各级虚拟机器,构成了三级层次结构

d929780430b054979db1f51ec252f086.png

    实际上,在虚拟机器M2和实际机器M1之间,还有一层由操作系统软件构成的虚拟机器。操作系统控制和管理计算机的全部硬件和软件,是软硬件的分界面。操作系统的功能要通过其控制语言来实现,由汇编语言翻译得到

    实际机器M1还可向下延伸出微指令机器M0。M1中的每一条机器指令,可以被翻译成一组微指令,即一个微程序,微程序是可以由硬件直接执行的

    微指令由二进制代码表示,每一位的0或1都代表一个控制信号,逐条执行一条机器语言对应的一组微指令,就相应地完成了这条机器指令的全部操作

由此,我们得到了常见的五级计算机系统层次结构:

d9b51346cf92133dda920aabd907b352.png

    在目前计算机研究中,硬件研究的主要对象是M0和M1,软件研究的主要对象是操作系统以上的各级虚拟机器。但需要注意的是,软硬件的界面划分不是一成不变的,比如人们把某些软件永恒地存于只读存储器中,称之为固件

    M4还可以往上延伸出应用语言虚拟机器M5,这一层是为满足某种用途而专门设计的,如用于人工智能的语言,有兴趣的朋友可以自己去探索~

8780cf468b5e5f8f585e5ff60ac6f2e9.png

有收获的话,就关注我叭!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值