编译时会发生什么?

时间:2009-09-14 01:01:59

标签: compiler-construction

我想知道编译什么,编译时会发生什么?我的意思是,你按下编译或在控制台中输入,但它在“背景”中实际做了什么?

5 个答案:

答案 0 :(得分:30)

  1. 首先,编译器"lexes"来源。这意味着它将源转换为一系列“令牌”。标记是对编译器有意义的字母,数字和符号序列。

  2. 接下来,编译器"parses"来自第一步的令牌序列。这意味着编译器会检查以确保源符合编程语言的规则(grammar)。

  3. 接下来,编译器执行syntactic analysis以创建源的表示以确定源的语义含义。这是编译器构建syntax tree

  4. 的步骤
  5. 最后,编译器将generate输出捕获目标表示中源的语义含义(无论是机器代码,中间语言,如Microsoft's CIL,还是其他编程语言)。

  6. 有关简要信息,请参阅Wikipedia。有关血腥的详细信息,请参阅the dragon book(每个计算机科学专业的学生都应该学习本书)。

答案 1 :(得分:10)

请参阅this

基本上,魔法精灵和仙女将人类可读代码转换为机器代码。

答案 2 :(得分:3)

非常简短的概述是编译器解析您的代码检查错误,然后将其转换为字节或机器代码。

为了更好地概述,我会阅读关于编译器的维基百科文章:

http://en.wikipedia.org/wiki/Compiler

答案 3 :(得分:3)

this

龙书,构建编译器的原始来源。

答案 4 :(得分:1)

编译正在将源代码转换为机器代码。通常,编译器(或解释器)将生成一个中间代码,有时称为字节代码,它在虚拟机上运行(这就是java的编译方式)。字节代码由vm转换为在您定位的特定体系结构上运行的机器特定代码。整个过程可以被认为是“编译”