一起学习LLVM(四):学习llvm-cbe

近来学习一下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语言的语法格式。

2.1数据类型:

2.2对应的Array、Vector的名字:

2.3对应的比较语句的转换:

等等

三、结果分析:

3.1实验分析

转换前:

转换后:

转换完以后:以大量的goto语句存在。

3.2已知问题

1.可能是由于clang版本问题,解析格式有问题:

2.对于太复杂的C编译成的文件估计2c会有问题:

一种为变量的定义问题以及对于一些类型的识别。

但是能做到这一步已经很厉害了,可以在此基础上更新,修复。

四、总结:

 缺点是只是支持对于C语言,但是要支持C++确实是很难,毕竟C++在C的基础上扩展那么多。

 优点就是XX2IR,IR2c等等,与clang LLC -macrh=cpp 这种以API的格式来表现完全不一样。这个是真正的转为C语言。当然还有一个很大用途就是可以增加安全保护的轻量化。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值