Compiler construction 编译时会发生什么?

Compiler construction 编译时会发生什么?,compiler-construction,Compiler Construction,我想知道什么是编译,编译时会发生什么?我的意思是,是的,您可以在控制台中按compile或键入,但它在“后台”中实际做了什么 基本上,魔法精灵和精灵会将人类可读的代码转换成机器代码。一个非常简单的概述是,编译器会解析您的代码,检查错误,然后将其转换为字节或机器代码 要获得更好的概述,我可以阅读维基百科关于编译器的文章: 编译是将源代码翻译成机器代码。通常,编译器(或解释器)将生成一个中间代码(有时称为字节码),该代码在虚拟机上运行(java就是这样编译的)。虚拟机将字节码转换为在目标特定体系结构

我想知道什么是编译,编译时会发生什么?我的意思是,是的,您可以在控制台中按compile或键入,但它在“后台”中实际做了什么


基本上,魔法精灵和精灵会将人类可读的代码转换成机器代码。

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

要获得更好的概述,我可以阅读维基百科关于编译器的文章:


编译是将源代码翻译成机器代码。通常,编译器(或解释器)将生成一个中间代码(有时称为字节码),该代码在虚拟机上运行(java就是这样编译的)。虚拟机将字节码转换为在目标特定体系结构上运行的特定于机器的代码。整个过程可视为“编译”或

龙之书,建筑编译器的原始来源

  • 首先,编译器是源代码。这意味着它将源代码转换为一个“标记”序列。标记是对编译器有意义的字母、数字和符号序列

  • 接下来,编译器从第一步开始计算令牌序列。这意味着编译器将进行检查,以确保源代码符合编程语言的规则

  • 接下来,编译器执行创建源的表示以确定源的语义含义。这是编译器将构建的步骤

  • 最后,编译器将输出捕获目标表示形式中源代码的语义含义(无论是机器代码、中间语言(如)还是其他编程语言)


  • 有关简要详细信息,请参阅。有关血淋淋的细节,请参见(计算机科学的每个学生都应该学习这本书)。

    目标通常是但不一定是机器代码。我处理的编译器编译成C代码——然后我们使用本机C编译器完成编译成机器代码的工作。另一个生成一个p代码(伪机器代码-连字符去哪里?);然后由解释器解释结果,解释器使用常规C(机器代码)函数执行p代码指令。Java编译器为JVM生成字节码——这也不是机器码。“或”与什么相比有点误导?你建议的阅读很好,但你应该让你的答案更接近于它本身。然后你会得到更多的选票……这是对我为这个问题找到的第一个答案的回应,答案很简单,就是“这个”。作为维基百科关于编译器的文章的链接。谢谢,“(每个计算机科学的学生都应该学习这本书)。”我是计算机科学的学生。。我从未真正了解过那本书,我更专注于编程。。数据结构、对象等等。。从未真正想过“超越”龙书并没有那么血腥。上次我检查时,它只提到过几次垃圾收集,并且绝对没有提供任何关于异常处理的信息。或者我错过了它们?我不知道龙书中包含了什么,但是Java中的现代编译器实现()这是我们在大学的课程中使用的。