gpt4 book ai didi

compiler-construction - 编译器是否特定于操作系统?

转载 作者:行者123 更新时间:2023-12-04 08:24:26 25 4
gpt4 key购买 nike

我理解编译器的作用,因为它需要源代码并将其编译为计算机可以理解的机器代码。但是,我想知道一件事,那就是,该机器代码是否特定于每个不同的操作系统?是否有必要在 Mac、Windows 和 Linux 操作系统上为同一语言编写不同的编译器?如果答案是肯定的、否定的或介于两者之间,请详细说明。

最佳答案

这取决于。

生成机器指令的编译器是特定于机器(或体系结构)的:ARM 和 x86 具有不同的指令集,因此每个机器代码都会有很大不同,但它不一定依赖于操作系统(尽管它通常是,因为不同操作系统具有不同的调用约定等。)链接器组件几乎总是特定于操作系统的,因为这是为该操作系统创建可执行文件的原因。并非所有编译器系统都将编译器与链接器分开——如果它是一个程序,那么它将是特定于操作系统的。

但是,也有独立于操作系统/机器的编译器:最著名的是 Java(以及其他基于 JVM 的语言,例如 Scala 或 Groovy)。这是因为 Java 编译器为 JVM 生成字节码,并由 Java 运行时(特定于操作系统和处理器)执行。但是 Java 编译器(用 Java 编写)可以在任何机器上运行,并生成可以在任何机器上运行的代码。

关于compiler-construction - 编译器是否特定于操作系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53697891/

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