gpt4 book ai didi

compiler-construction - 编译器和解释器如何在一种语言中使用?

转载 作者:行者123 更新时间:2023-12-03 16:04:00 24 4
gpt4 key购买 nike

我已经阅读了有关编译器、解释器和同时使用两者的“事物”定义的足够解释。我没有发现编译器和解释器如何在一种语言中使用。

最佳答案

在 Java 中,源代码首先是 编译 到字节码,然后由 运行翻译 (JVM - Java 虚拟机)。

字节码是虚拟机的机器码。

在 Javascript 中,有一个运行时(引擎)可以进行即时编译(JIT)。基本上,在执行时它会给出一个源代码,它会立即将其转换为 native 代码,然后执行代码。在 Chrome 的引擎中,有两个模块进行编译:一个可以快速执行代码,但代码没有经过太多优化(点火解释器),另一个产生高性能代码但编译需要更多时间(涡轮风扇编译器)。

为什么同时使用:

  • 可移植性 - 当您使用编译 AOT 的中间表示时,您可以获取此字节码并在为其提供虚拟机的任何架构上运行它。您可以将相同的 Java 字节码推送到 Mac、PC 或 Linux 上的客户端。如果他们安装了 JVM,则代码将运行。对于 C 或 C++,您必须为每个体系结构提供不同的可执行程序
  • 快速的初始启​​动和良好的执行性能 - 编译需要时间(并且代码越优化,编译所需的时间就越多)但没有人喜欢等待。最好产生一些不完美的东西(点燃阶段),然后通过将热路径编译成高度优化的机器代码(涡轮风扇阶段)来逐步改进代码。这在今天尤其合理,因为我们有许多内核的 CPU,但我们无法全部利用它们,因为创建具有许多并行线程的程序很困难(因此一个内核可以执行程序,而另一个内核可以同时优化代码)
  • 关于compiler-construction - 编译器和解释器如何在一种语言中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54955861/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com