编译器如何与运行时系统相关?

时间:2017-11-08 22:17:10

标签: compiler-construction runtime

快速搜索编译器的角色会带来以下结果:

  

编译器是一个特殊的程序,用于处理以a语言编写的语句   特定的编程语言并将其转换为机器语言   或"代码"计算机的处理器使用。

但是,我还读到每种语言都需要有一个目标运行时系统,用该语言编写的程序在运行时系统的上下文中执行。

加起来两者,似乎编译器将程序转换为运行时系统可理解的位,运行时系统充当代理解释位,将它们转换为处理器指令。它是否正确?如果没有,编译器和运行时系统如何相关?

如果上述情况正确,则意味着以下情况:

  1. 从编写相同逻辑的程序编译的两个可执行文件 用不同的语言不一样
  2. 平均机器会有几十个运行时间,但似乎并非如此。
  3. 我在这里缺少什么?

2 个答案:

答案 0 :(得分:0)

运行时是一组已编译为在机器上运行的库(用于特定语言)(真实或虚拟)。它没有做任何解释,只是在需要时使用它。

编译器会将源代码转换为也可以在机器上运行的机器代码,并且可以调用已经存在的运行时中定义的函数或过程。

  从使用不同语言编写的相同逻辑的程序编译的两个可执行文件将不相同

最有可能。

  

平均机器会有几十个运行时间,但似乎并非如此。

如果程序员使用几十种不同的语言,它可能会有几十种。但我不认为这是常见的情况。

答案 1 :(得分:0)

这听起来像是一本令人困惑的书。

在这里你遇到了歧义。

  

但是,我还读到每种语言都需要有一个目标运行时系统,用该语言编写的程序在运行时系统的上下文中执行。

[修辞问题]什么是"运行时系统?"这是底层硬件/操作系统的组合吗?是针对特定语言的运行时支持吗?

  

加起来两者,似乎编译器将程序转换为运行时系统可理解的位,运行时系统充当代理解释位,将它们转换为处理器指令。它是否正确?如果没有,编译器和运行时系统如何相关?

这又取决于什么"运行时系统"手段。所有程序都需要调用操作系统(即使它们是程序员的幕后操作)。

某些编程语言需要更大的支持,并且具有本质上驱动程序的库。但是,这些是函数调用,而不是位解释。

  

如果上述情况正确,则意味着以下情况:   从具有用不同语言编写的相同逻辑的程序编译的两个可执行文件将不相同

几乎总是如此并非总是如此。

  

平均机器会有几十个运行时间,但似乎并非如此。

这取决于你的意思"运行时。"如果它是特定编程语言的支持函数库,则为YES。如果你的意思是解释位,那么NO。