编译基础原理

编程语言有各种各样的,包括指令型的->编译型->解释型等,高级语言一般都是需要编译成低级语言来让计算机执行,解释型的语言其执行环境会处理一系列的过程,不过总体大致是一致的。
先了解下源代码到程序的执行过程

  • 编译
    这个过程编译系统将我们写的文本字符串编译生成计算机目标代码。
  • 链接
    这个阶段链接器会把生成的每个目标文件协调起来,生成可执行文件
  • 载入
    这个阶段把生成的可执行文件加载内存中生成一系列指令,供计算机识别执行

编译的一般步骤

  • 扫描程序(scanner)
    主要用来处理注释、宏、预编译指令、关键字,标识符,字面量,特殊符号等。简单来说就是把源代码进行“单词化”

  • 语法分析(parser )
    将扫描出来的“词”生成语法树

  • 语义分析(semantic analyzer )
    遍历整个语法树,把每个节点的表达式都标识类型,并且验证是否合法。

  • 优化程序(source code optimizer)
    通过编译器对代码改进或优化,如不必要的计算、调用、无用代码之类的。

  • 代码生成(code generator)
    由代码生成器得到中间代码,中间代码主要是为了处理平台的差异性,与源代码的种类也无关。

  • 目标代码(target code optimizer )
    编译器尝试着改进由代码生成器生成的目标代码,即加、减、乘、除跳转的优化,生成机器能识别的汇编代码。
    当然计算机最终执行的是01代码,但是机器指令其实是识别的汇编代码的。

你可能感兴趣的:(编译基础原理)