当我在youtube上观看demoscene视频时,作者经常吹嘘他们的文件大小是64kb或更少,有些只有4kb。当我用C ++编译一个非常基本的程序时,可执行文件总是至少90kb左右。这些演示是完全用汇编写的吗?我的理解是,demomakers也使用了c / c ++。
答案 0 :(得分:7)
这些演示不使用标准库(不是C ++,甚至不是C标准库),也不使用标准库(以避免导入表大小)。它们仅动态链接所需的绝对最小值
演示的“主要功能”通常与入口点相同(不同于正常程序,其中入口点是CRT初始化函数,它执行某些特定于操作系统的设置,初始化全局变量,运行构造函数,最终调用main
)。
通常,演示可执行文件不符合可执行格式的规范(省略最小部分大小和对齐),并使用exe-packer进行压缩。从技术上讲,这些都是“破碎”程序,但它们只是“破碎”得太多,以至于它们仍能成功运行。
此外,此类演示在很大程度上依赖于程序生成的内容。
答案 1 :(得分:5)
我是Felix's Workshop和Immersion的编码员之一(按Ctrl-Alt-Test进行64k介绍)。现在大多数64k的介绍使用C ++(例外:Logicoma使用Rust)。汇编可能对4k的介绍有意义(尽管其中大多数实际上使用的是C ++),但不适用于64k的介绍。
以下是两件最重要的事情:
现在,您可以在填写64kB之前编写大量代码。怎么用?程序生成。
想要了解有关程序生成和其他技术的更多信息吗?检查IQ's articles。
如果你想进一步优化你的代码,这里有一些额外的技巧:
在典型的4k简介中,C ++代码用于音乐和初始化。图形在着色器中完成。
答案 2 :(得分:2)
这些超小程序通常不依赖于任何库或框架,这是传统应用程序开发的典型特征。这些程序通常直接访问graphics / io等。
答案 3 :(得分:1)
我还不能发表评论,因为我没有50个代表点,所以我正在回答。
创建较小程序的一种方法是使用较旧的编译器,例如Microsoft Visual C / C ++ 4.0,它生成比Microsoft Visual Studio 2005更小的.exe文件。
答案 4 :(得分:1)
这实际上取决于您的环境,但如果您不这样做 实例化任何模板,并动态链接所有内容, 你可以很容易地实现一个非常小的尺寸 可执行文件,因为您实际执行的代码都不是 在可执行文件中。