LLVM
windiwen
编译器 llvm gcc 随便玩玩
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LLVM(一):简单介绍
本人对LLVM的学习主要在2013年,到现在已经有很长的时间没有接触了。俗话说的好:温故而知新,可以为师矣。llvm有很多值得学习的地方。LLVM和GCC的主要架构区别在于它采用了自己的中间代码形式,也就是llvm bitcode。前后端分离,启到的跨平台的作用,比如在android中的RSscript就是通过llvm前端clang类似的slang转换为llvm bitcode,存在于apk文原创 2014-02-20 13:43:27 · 2202 阅读 · 0 评论 -
LLVM(二):后端结构
LLVM后端的功能就是处理LLVM IR(中间表达式)并生成目标机器指令。要实现一个LLVM编译器的后端需要以下步骤:1. 描述目标机器的特性2. 描述目标机器的寄存器3. 描述目标机器的指令集4. 描述指令选择器(也就是如何将IR转换成Target指令)5. 描述MC层(Machine code) 可选的步骤有:1.原创 2014-02-20 16:12:15 · 2508 阅读 · 0 评论 -
LLVM(三):Tablegen简介
上一篇介绍实现llvm后端需要做的一些工作,有很大一部分工作是描述目标体系结构的特征,包括指令集,寄存器等信息。Tablegen就是用于记录这些信息的描述性语言。目标体系结构目录下的*.td文件都是用tablegen语言来描述的。经过tablegen工具批量生成C++源文件,它的好处就是我们描述的是大量信息的共同点,然后由工具批量生成,减少我们描述的工作量,使用tablegen语言也十分简单灵活。原创 2014-03-04 10:03:17 · 4664 阅读 · 0 评论 -
LLVM(四):指令描述td部分
重要的指令属性include/llvm/Target/Target.td中的instruction类是所有指令的父类。//===----------------------------------------------------------------------===//// Instruction set description - These classes correspon原创 2014-03-04 15:18:15 · 4399 阅读 · 0 评论
分享