c++ - 发出 native 代码(针对特定平台)

标签 c++ compiler-construction native

如何开始为目标平台生成 native 代码?我在 C++ 方面有(一些)经验和(一些)技能,并且有兴趣编写自己的编译器(针对 C++)。但我不知道如何将最终结果转换为 native 代码以在我的目标平台上执行,目前目标平台只是 Windows、x86。

我看过 LLVM,但无法理解他们的 shiz 文档。

编辑:此外,LLVM 不会构建在 VS2010 上。我检查并清理了他们显然在文件名末尾添加 .in 的所有地方,并修复了 typedef,现在他们有一些奇怪的 .def 文件,这些文件似乎完全没有必要,无法编译,而且我不知道它们是从万亿个 header 中的哪里调用的。

更多编辑: 我已经在构建/构建我自己的 AST/解析器/词法分析器。我只需要知道如何将结果转换为原生结果。

最佳答案

看看其他一些关于编写编译器的问题,比如learning-to-write-a-compiler ,并完成了类似《龙之书》或Programming Language Pragmatics之类的内容。 ,您将充分了解 LLVM 或 gnu lighting,以便将它们用作后端。

不要尝试编写 C++ 编译器,除非您有几年的时间致力于这项工作;另一方面,基于现有后端和表达式模板创建某些内容可能只需要几个月的时间。

关于c++ - 发出 native 代码(针对特定平台),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3100311/

相关文章:

c++ - 无法在 QT Creator 中打开包含文件 pcap.h (C1083)

php - PHP静态变量在内部是如何实现的?

java - 从java代码到jvm字节代码的转换会被视为编译还是转译?

java - GWT 中的 native Javascript 方法

c++ - "no matching function"初始化类

c++ - 复合赋值运算符的类型/转换? (例如 *=(星号等于))

c++ - 使用迭代器遍历和取消遍历 std::vector 的最干净的方法是什么?

c++ - MS Visual Studio 到 Linux - 在 VirtualBox 中编译和调试

Android 4.3 : Native crash in unkown. 未知

c# - 该语言不支持“MethodName”