LLVM IR限制

use*_*589 2 c llvm llvm-clang llvm-ir

我期待从C代码生成LLVM-IR代码,并想知道函数的IR生成有多好:

stdio.h,string.h,stdlib.h和一般标准的基于内存的函数,如malloc,calloc,因为我还没有找到大多数常用函数:

http://llvm.org/docs/LangRef.html并且想知道这种表示的局限性以及是否可能需要添加我自己的内在函数来处理标准/最流行的c函数.

我希望在运行时更改代码,所以想知道哪种方法会给我最大的灵活性,例如:操作AST级别的代码.

谢谢

Eli*_*sky 6

从C发出LLVM IR正是工业级编译器Clang所做的.我建议在C代码的小片段上运行Clang -emit-llvm(本文档中的详细信息:http://clang.llvm.org/get_started.html)并观察生成的IR.

您甚至可以在浏览器中执行此操作:http://ellcc.org/demo/index.cgi

这将允许您查看内置类似memcpy的处理方式以及任何其他类似的疑问.

请注意,LLVM和Clang都不带有完整的C库,但它们可用于编译现有的库.newlib是一个流行的便携式C库,专为在各种新平台上构建而设计.PNaCl,例如,用它来建立C/C++代码到便携式可执行-它与用户的代码编译newlib在一起成为单个LLVM IR模块.