我正在寻找能够用编程语言从输入程序创建Win32程序的编译器的源代码(哪个更好,也许越简单越好)
然而我找不到适合自己的东西,像GCC这样的大型编译器让我非常困惑,因为它们有很多功能,我不知道从哪里开始。
答案 0 :(得分:4)
http://en.wikipedia.org/wiki/List_of_compilers选择许可类型为“开源”的
答案 1 :(得分:2)
我建议选择编译器教科书。它们解释了编译器的所有必需组件,并且通常从头到尾开发编译器。
我在编译器课程中拥有Modern Compiler Implementation in Java的副本,我对它非常满意。
答案 2 :(得分:2)
您是否正在尝试了解如何构建编译器,或者您是否正在尝试了解内部Win32可执行文件的内容?
如果前者那么读一本关于如何创建编译器的书将比尝试反向设计源代码更有效。编译器与您见过的任何东西都不同,让作者引导您完成所使用的原理和常用技术和工具确实很有帮助。还值得指出的是,编译器是分阶段构建的,只有在实现结束时才需要了解您所针对的CPU和操作系统。如果您不熟悉编译器构造,那么在您进入该阶段之前,您需要了解很多。
但是,如果您想了解Win32可执行文件的格式,则需要了解x86(或x64)汇编代码和可执行(PE)文件格式(Windows用于可执行文件)。有关x86汇编代码的介绍,我建议Paul Carter博士的优秀“PC汇编语言”免费电子书http://www.drpaulcarter.com/pcasm/和PE我会从http://msdn.microsoft.com/en-us/magazine/cc301805.aspx和http://msdn.microsoft.com/en-us/magazine/cc301808.aspx
开始答案 3 :(得分:0)
答案 4 :(得分:0)
如果您的目标是了解编译器的工作方式和/或如何编码,那么真的应该阅读有关该主题的书籍。但是,在查找源代码示例时,请尝试Pascal编译器样本,如this one。
Pascal有一个简单的语法,并在许多书籍中实现。
答案 5 :(得分:0)
最简单的编程语言是Assembly,x86-assembly是精确的。最着名的汇编程序NASM是开源的;你可以在以下网址查看它的来源:
NASM有宏,它们确实被“编译”成汇编语句。虽然它不是一种完全成熟的语言,但它专注于基础知识。
答案 6 :(得分:0)
我建议为MS-DOS(16位)寻找Pascal,C或SmallC编译器源代码。特别是如果它们将自己限制在16位平坦实模式(< = 64KB存储模式),它们应该相当简单。
对分段实模式的支持增加了最大程度避免的复杂性,并且与32位平面保护模式程序(非OS 32位编程)无关。
对于非x86处理器,Jack Crenshaw系列文章“Let's Build a Compiler”的示例程序,这是一个类似Pascal的语法编译器,面向Motorola MC68000 16/32位处理器。还有Marcel Hendrix在win32上写的Forth version of the series。
还有TCC - Tiny C编译器,它支持PE-i386输出(即Win32)。
虽然如果您无法阅读Firas Assaad在评论中提供的整个SO链接,其中包含除了其中一个链接之外的所有链接,我相信您将会发现编译器的源代码非常长。