【发布时间】:2017-01-25 04:08:17
【问题描述】:
我想设计和开发自己的编程语言和编译器。我仍然是一名了解 C/C++ 的数学本科生。我几乎没有进行网络研究并阅读了一些电子书,但其中大多数使用特定工具将对象/中间代码转换为机器代码,其中大多数解释了如何使用汇编程序将新的编程语言转换为机器代码。那里有很多教程/参考资料“如何将程序集转换为机器操作代码”,但它们为新手跳过了一些级别。我想深入探讨这个主题。 - 假设我设计了自己的编程语言(假设它被称为 = "MW")并具有正确的语法和运算符。
问题
如何将MW语言代码直接转换为机器码,以便为O/S生成可执行文件?
如果您能给出非常明确和解释性的答案,我们将不胜感激。 由于我不是计算机科学专业的学生,我需要一些指导和逐步描述如何以及为什么? 如果有人知道这方面的好书或网站,请回复。
- 我的目的是构建一个像“Wolfram”这样的系统 Mathematica”。请不要围绕编程争论 语言类型,例如 - 符号、程序、数字等。
谢谢。
【问题讨论】:
-
你懂C还是你懂C++?请注意,这两种语言不是一回事。您应该为您的实施选择一个。
-
对 SO 来说太宽泛了,但是给“龙书”一个谷歌。
-
@fuz 我知道 C++,我的意图是用 C++ 构建编译器?你有什么建议哪一个更灵活更好的 C 或 C++?
-
@user4581301 感谢您提供的信息。
-
关于您的主要问题和简短回答:机器代码只是字节值序列,因此您只需生成指令编码和数据值流,并将其包装到一些可执行文件/目标文件头中,所以其他工具或操作系统会识别它。如何生成正确的目标机器指令以重新创建以您的高级语言指定的功能是 IT 中的一门完整的子科学,并且可能会为 1000 多页的答案提供帮助。此外,您可能需要考虑不翻译成机器代码,而是 C++,这样您的语言将是可移植的,然后再加上 C++ 优化的好处。
标签: c++ assembly linker programming-languages machine-code