版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
近来学习一下LLVM-cbe这个后端对于ir解析成c的一个框架,很有意思。
github源码:https://github.com/buzhishishi/llvm-cbe
由于要编译C到ir的过程,所以要安装clang,这里注意由于后面要执行make llvm-cbe,要在llvm 下面的CmakeList.txt中添加这个任务:
option (LLVM_BUILD_EXTERNAL_LLVM_CBE
"Build llvm-cbe as an external project." ON)
大致原理是根据ir的结构去解析,然后进行等价的翻译为C语言的语法格式。
缺点是只是支持对于C语言,但是要支持C++确实是很难,毕竟C++在C的基础上扩展那么多。
优点就是XX2IR,IR2c等等,与clang LLC -macrh=cpp 这种以API的格式来表现完全不一样。这个是真正的转为C语言。当然还有一个很大用途就是可以增加安全保护的轻量化。