【发布时间】:2011-12-13 16:24:07
【问题描述】:
我正在尝试学习 x86。我认为这很容易开始 - 我将编译一个非常小的程序,基本上不包含任何内容,然后看看编译器给了我什么。问题是它给了我很多膨胀。 (此程序不能在 dos 模式等下运行) 25KB 文件包含一个空的 main() 调用一个空函数。
如何编译我的代码而不会出现这些臃肿? (为什么它首先存在?)
【问题讨论】:
-
(这个页面可能对这个话题很有趣,虽然它是针对 Linux 而不是 Windows:muppetlabs.com/~breadbox/software/tiny/teensy.html)
-
你使用什么标志?优化带来了巨大的不同。一般来说,C 编译器的输出不仅简洁高效,而且聪明到让人眼前一亮。
-
膨胀是因为操作系统以及它们可以处理的可执行文件很复杂。您可以尝试使用 Linux 并编译为
a.out格式,这可能比 ELF 或 PE 更简单。 -
我目前在 windows 7 上运行默认的代码块。下周我将在 linux 中试一试。
-
delnan:
a.out既是古老的文件格式,也是编译器在 Unix 上为编译输出赋予的默认名称。不过,文件名不再暗示文件格式。
标签: c x86 reverse-engineering