什么是编译——从人工翻译讲起

一、程序设计语言与编译

计算机程序设计语言可以简单分类为:高级语言(类似于数学形式或者自然语言的简洁形式)、汇编语言(引入助记符和机器语言(可以被计算机直接理解)。

举个例子,让x等于2用这三种语言来表示的话就是:

  • 高级语言:x = 2

  • 汇编语言:MOV x,2

  • 机器语言:C706 0000 0002

把高级语言翻译成汇编语言或机器语言,就是编译

二、编译的大致流程

我们来看一个人工英汉翻译的例子

 

  1. 词法分析,翻译的第一步是分析源语言,各个单词的词性

     

  2. 语法分析,分析句子中各个部分的语法成分

     

  3. 语义分析,机器会生成一个中间表示,来表明句子的语义

     

而在二进制的世界中,编译这件事会略微复杂一点,但大体结构类似翻译。

第一步:词法分析,机器会识别源程序中各个类型符号(从左往右),然后转换成词法单元(token)的形式

举个例子:

sum=(10+20)*(num+square);

经过词法分析后,得:

 

具体单词类型和种别码的关系,如下图

 

第二步:语法分析,在上一步输出的token序列中识别出各类短语,并且构造语法分析树

第三步:语义分析,一般和语法分析同时进行,也称为语法制导翻译,他的任务是对结构上正确的源程序进行上下文有关性质的审查。

第四步:生成中间代码,一种结构简单、含义明确的记号系统,便于翻译为目标代码

还是那个例子:

sum=(10+20)*(num+square);

它的中间代码可以是以下几种:

 

第五步:目标代码的生成,也就是将中间代码转换为目标机上的机器指令代码或者汇编代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值