c++ - 编译器是否可以生成代码以在执行期间卸载部分代码段?

标签 c++ compiler-construction segment

除了提供在运行时加载/卸载方法或函数的能力的 Dll 概念之外,我想知道编译器是否可能会说这样的话,好的,因为代码的这个特定部分在代码中占用了大量空间段并且在程序执行期间的这一点之后永远不会再次使用,最好生成一些代码以在程序执行期间到达特定点后卸载代码段的那部分,以便代码段占用的整体空间变小。这只是虚构的还是可能会发生?

最佳答案

当然。有一种技术叫做 overlaying在不同的时间将不同的代码加载到地址空间的同一位。有时它是手动完成的,有时是编译器帮助完成的。有时加载是在软件中完成的,有时是在硬件中完成的(使用地址多路复用,例如在启动期间,地址空间的一位从 ROM 芯片读取,但在启动后它切换到地址 RAM 或不同的 ROM)。

当计算机内存较少时,覆盖更为常见,例如在 DOS 的早期,你最多只有 640K,而且通常甚至没有。如今,它仍然有用于内存和/或地址空间非常宝贵的嵌入式系统的应用程序。

关于c++ - 编译器是否可以生成代码以在执行期间卸载部分代码段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3798017/

相关文章:

c++ - region growing segmentation clusters 错了吗?

c - 为什么全局变量存储在堆中?

c++ - 如何检测类中是否存在特定的成员变量?

c++ - 查找未初始化成员变量的简单方法

c++ - 无法解决 opencv 代码中的 malloc 错误

C++11 initializer_list 错误

c++ - 如何在类里面使用 cv::setMouseCallback?

c - Flex 中的链接未完成问题

mysql - 无法编译简单的mysql程序

python - python中的时间序列分割