我想知道编译什么,编译时会发生什么?我的意思是,你按下编译或在控制台中输入,但它在“背景”中实际做了什么?
答案 0 :(得分:30)
首先,编译器"lexes"来源。这意味着它将源转换为一系列“令牌”。标记是对编译器有意义的字母,数字和符号序列。
接下来,编译器执行syntactic analysis以创建源的表示以确定源的语义含义。这是编译器构建syntax tree。
最后,编译器将generate输出捕获目标表示中源的语义含义(无论是机器代码,中间语言,如Microsoft's CIL,还是其他编程语言)。
有关简要信息,请参阅Wikipedia。有关血腥的详细信息,请参阅the dragon book(每个计算机科学专业的学生都应该学习本书)。
答案 1 :(得分:10)
请参阅this
基本上,魔法精灵和仙女将人类可读代码转换为机器代码。
答案 2 :(得分:3)
非常简短的概述是编译器解析您的代码检查错误,然后将其转换为字节或机器代码。
为了更好地概述,我会阅读关于编译器的维基百科文章:
答案 3 :(得分:3)
或this。
龙书,构建编译器的原始来源。
答案 4 :(得分:1)
编译正在将源代码转换为机器代码。通常,编译器(或解释器)将生成一个中间代码,有时称为字节代码,它在虚拟机上运行(这就是java的编译方式)。字节代码由vm转换为在您定位的特定体系结构上运行的机器特定代码。整个过程可以被认为是“编译”