编译器介绍

编译器

编译器是什么?

介绍编译器之前,我们先介绍翻译程序的概念,所谓翻译程序,就是把一种语言翻译成另一种语言的程序,这是一个比较广的概念,如中文翻译成英文,c++翻译成机器码。

而编译程序,也就是编译器呢,就是将一种高级语言翻译成更低级语言的翻译程序。这里的高级、低级就是与机器的接近程度。高级语言如C/C++、Java、Python更抽象,不与具体的指令集直接相关;而低级语言则依赖于具体的机器平台对应的指令集,比如x86汇编、arm汇编。

为什么需要编译器

为什么需要编译器?因为汇编太复杂、开发效率太低,且高度平台相关,所以需要更加抽象,更易于人类理解使用的高级语言,但特定的计算机在设计时,硬件已经规定了一套能够识别的指令集合,即指令集架构(Instruction Set Architecture, ISA),计算机只能识别该符合其ISA的指令。所以我们想要让高级语言在计算机上执行时,必须经历一个翻译过程。

例子:

编译器的结构

首先编译器的输入是高级语言的源代码,其实就是文本文件,即一个字符串;编译器的输出是能在目标机器上执行的机器码,或者汇编代码;从输入得到输出,编译器主要包含以下步骤:

  • 词法分析 (字符串—> token流)
  • 语法分析 (token流—> 若干语法结构)
  • 中间代码生成 (语法结构–>根据语义得到中间表示)
  • 优化 (中间代码–> 更好的中间代码)
  • 目标代码生成 (中间代码–>目标机器上的机器码或汇编)
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值