【发布时间】:2012-05-09 11:13:46
【问题描述】:
所以最近,为了磨练我的汇编技能,我用 C++ 为一种玩具语言编写了一个非常简单的编译器。它运行单遍,并在解析阶段直接将代码发送到多个字符串流,每个流代表一段代码(即一个代表section .bss,而其他代表.data和.text)。之后,这些字符串流被写入一个文件,我使用 NASM 和 gcc 来组装和链接它们。我知道这种单程方法效率极低,但同样,这更像是一种理解代码生成阶段的练习,而不是其他任何事情。无论如何,我想修改我的代码以直接发出 LLVM IL 而不是原始汇编,再次作为学习练习。是否有 LLVM IL 的入门级指南?或者,甚至更好的工具来确定一行汇编的等效 IL 代码?我看了看,只找到了完整的规范,这比我需要的信息多得多。
【问题讨论】:
-
不会有一对一的映射。这里没有捷径。
-
我意识到这一点,我只是在寻找有关如何发出基本内容的指南,例如保留数据、cmp 和条件跳转等。
-
LLVM 文档。有一个(至少一个)教程,指导您为玩具语言创建编译器。
-
我看到了,但它已经过时了,而且大部分示例代码都不起作用。
-
这个项目可以在某个地方查看吗?会很有趣...
标签: c++ assembly compiler-construction x86 llvm