我听说过类似“C运行时”,“Visual c++ 2008运行时”,“。NET公共语言运行时”等。

什么是“运行时”? 它是用什么做的? 它如何与我的代码交互?或者更准确地说,我的代码是如何被它控制的?

在Linux上编写汇编语言时,我可以使用INT指令进行系统调用。那么,运行时只是一堆将低级函数包装成更抽象和高级函数的预制函数吗?但这看起来更像是库的定义,而不是运行时的定义吗?

“运行时”和“运行时库”是两个不同的东西吗?

加1

这些天,我在想也许运行时与所谓的虚拟机(如JVM)有一些共同之处。下面这句话引出了这样的想法:

这个编译过程非常复杂,很难分解 有几个抽象层,这些抽象层通常包括三个 翻译器:编译器、虚拟机实现和 汇编程序。——《计算系统的要素》(导论, 通往硬件领域的道路)

加上2

《专家C编程:深层C语言秘密》一书。第6章运行时数据结构是对这个问题的有用参考。

加3 - 2021年2月28日上午7:31

以下是我对处理器设计有所了解后的一些看法。整个计算机就是多个层次的抽象。它从基本的晶体管一直到运行的程序。对于任何抽象级别N,它的运行时间是直接的抽象级别N-1,在它下面。是上帝给了我们抽象的0级。


当前回答

根据维基百科:运行时库/运行时系统。

在计算机编程中,运行时库是编译器使用的特殊程序库,用于在计算机程序运行时(执行)实现编程语言中的函数。这通常包括用于输入和输出,或用于内存管理的函数。


A run-time system (also called runtime system or just runtime) is software designed to support the execution of computer programs written in some computer language. The run-time system contains implementations of basic low-level commands and may also implement higher-level commands and may support type checking, debugging, and even code generation and optimization. Some services of the run-time system are accessible to the programmer through an application programming interface, but other services (such as task scheduling and resource management) may be inaccessible.


回复:你的编辑,“运行时”和“运行时库”是同一件事的两个不同的名字。

其他回答

根据维基百科:运行时库/运行时系统。

在计算机编程中,运行时库是编译器使用的特殊程序库,用于在计算机程序运行时(执行)实现编程语言中的函数。这通常包括用于输入和输出,或用于内存管理的函数。


A run-time system (also called runtime system or just runtime) is software designed to support the execution of computer programs written in some computer language. The run-time system contains implementations of basic low-level commands and may also implement higher-level commands and may support type checking, debugging, and even code generation and optimization. Some services of the run-time system are accessible to the programmer through an application programming interface, but other services (such as task scheduling and resource management) may be inaccessible.


回复:你的编辑,“运行时”和“运行时库”是同一件事的两个不同的名字。

运行时描述了在程序运行时执行的软件/指令,特别是那些你没有显式地编写,但对正确执行你的代码是必要的指令。

像C这样的低级语言运行时非常小(如果有的话)。更复杂的语言,如Objective-C,允许动态消息传递,有更广泛的运行时。

运行时代码是库代码,这一点是正确的,但库代码是一个更通用的术语,描述了任何库生成的代码。运行时代码是实现语言本身特性所需的代码。

运行时可以表示程序生命的当前阶段(运行时/编译时间/加载时间/链接时间) 或者它可能意味着一个运行时库,它形成了与执行环境交互的基本低级操作。 或者它可能意味着运行时系统,这与执行环境相同。

在C程序中,运行时是建立堆栈、堆等的代码,这是C环境所期望的要求。它基本上建立了语言所承诺的环境。(它可以有一个运行时库组件crt0。lib或类似的C)

运行时基本上是指程序与机器的硬件和操作系统交互的时间。C语言没有自己的运行时,相反,它从操作系统(基本上是ram的一部分)请求运行时来执行自己。

马特·鲍尔答对了。我会举例说明。

考虑运行一个用Turbo-Borland C/ c++(1991年的3.1版本)编译器编译的程序,并让它在32位版本的windows(如Win 98/2000等)下运行。

它是一个16位的编译器。你会看到你所有的程序都有16位指针。为什么你的操作系统是32位的?因为你的编译器已经设置了16位的执行环境,并且32位版本的操作系统支持它。

通常所称的JRE (Java运行时环境)为Java程序提供了执行它可能需要的所有资源。

实际上,运行时环境是虚拟机思想的大脑产物。虚拟机实现硬件和程序可能需要执行的内容之间的原始接口。运行时环境采用这些接口,并将它们呈现给程序员使用。编译器开发人员需要这些工具为其程序提供执行环境。