编译器输出语言 - LLVM IR与C.

Dan*_*Dan 10 compiler-construction code-generation llvm llvm-ir

对于编写编译器,使用LLVM IR vs C作为目标语言有哪些优缺点?我知道两者都被使用了,我想如果我使用clang来编译C,那么最终的机器代码会是相似的.那么还有什么需要考虑的事情呢?

Ric*_*ton 8

我已经将LLVM IR用于一些编译器后端,并与使用C作为后端的编译器一起工作.我发现给LLVM IR带来优势的一件事就是它是打字的.如果没有从LLVM库中获取错误,很难完全形成错误的输出.

在我看来,更容易在源代码和IR之间保持密切的关联以进行调试.

此外,您还可以使用所有酷炫的LLVM命令行工具来分析和处理前端发出的IR.

  • 对,C是打字的.但是在尝试编译C代码之前,您没有得到错误的指示.使用LLVM IR,您可以在生成IR时获得错误指示.更容易调试. (4认同)
  • 您输入的是什么意思?C也不打吗? (2认同)