【问题标题】:What translates compiler and interpreter code?什么翻译编译器和解释器代码?
【发布时间】:2020-04-19 21:20:40
【问题描述】:

所有编程语言都被翻译成机器代码,然后由硬件解释器执行。但是什么翻译了编译器代码和解释器代码等翻译器的代码?编译器翻译源代码,但编译器也用某种语言编写,那么什么翻译编译器代码/interpeter 代码?

谢谢

【问题讨论】:

    标签: compilation interpreter translate


    【解决方案1】:

    所有编程语言都被翻译成机器代码,然后由硬件解释器执行。

    这不一定是真的。除非 JIT 编译,否则解释器通常不会将给定的语言翻译成机器代码。

    但是什么翻译编译器代码和解释器代码等翻译器的代码?

    如果您用 C 语言编写解释器或编译器(例如),它会被 C 编译器翻译成机器代码 - 就像任何其他 C 程序一样。编译器和解释器在这方面并不特殊。

    【讨论】:

    • 谢谢@sepp2k 但是计算机如何在不知道其特定机器语言实现的情况下执行源代码?此外,如果所有东西都有编译器/解释器,那么它不会无限期地继续下去吗?
    • @MohammadRahman “计算机如何在不知道其特定机器语言实现的情况下执行源代码?”在普通(即非 JIT 编译)解释器的情况下,源代码由解释器执行,而不是由 CPU 执行。然后当然解释器本身由 CPU 执行。
    • @MohammadRahman “另外,如果所有东西都有编译器/解释器,那么它不会无限期地继续下去吗?”机器代码不需要编译器或解释器。所以这就是循环中断的地方:第一个编译器是用机器代码编写的,因此不需要任何先前的编译器存在。或者更准确地说:第一个编译器是用汇编语言(即基于文本的机器代码版本)编写的,而第一个汇编器是用机器代码编写的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-18
    相关资源
    最近更新 更多