理解runtime system

最近需要编译不同平台的库,因此比以前只开发C++程序关注底层更多点。先来看看术语runtime system的解释。

主要参考资料:

http://en.wikipedia.org/wiki/Runtime_system


runtime system有时候就简称runtime, 但是runtime字面意义是运行的时候发生的事情,范围很广。所以我这里仍然用runtime system.

无论什么计算机语言,都会在运行时执行一定的策略,或多或少而已。这些策略显然是一些可以运行的代码,这些代码一定会出现在你的可执行程序里面。我把实现这些策略的这些代码叫做runtime system. 因此这是一个人为制造出来的东西,它可以做的很少,比如C,也可以做的很多,比如Java或者其他更高级的动态语言。或许有些语言会定义一个标准,runtime system应该做哪些工作,或许不同的编译器实现者自己决定让runtime system干点什么。毕竟,说到底就是一段人写的代码。


先看看C的runtime-system都能干些什么。它管理进程的堆栈,创建局部变量所用的空间,把调用参数压入函数栈,维护栈的状态。

而在面向对象语言中,runtime-system还可以做类型检查和方法寻址(resolving method references),还可以做内存池管理等等, 比如Java的runtime system。


如果这部分代码被放在动态或者静态库中供应用程序链接,就叫做runtime library. 比如下图VC中:

http://msdn.microsoft.com/en-us/library/ms235265.aspx

理解runtime system_第1张图片


最后,不要把C++标准库和runtime library等同起来。前者是提供了C++标准库的所有实现,比如GCC的libstdc++,后者是运行时系统。


你可能感兴趣的:(#,c++编译)