- 博客(7)
- 收藏
- 关注
原创 ARMCC编译器优化分析(一)
最近分析了一下ARMCC编译器对于builtin函数的一些优化手段,与GCC不同,值得学习。在这里写出来与大家分享1.Printf1.1前言GCC前端调用fold_builtin_printf函数进行printf函数的fold优化。单个字符打印优化成putchar。在string中不包含%的情况下,printf("string\n");优化成puts。但是在参数1包含%的情
2014-03-20 16:36:27 3788 1
原创 LLVM(四):指令描述td部分
重要的指令属性include/llvm/Target/Target.td中的instruction类是所有指令的父类。//===----------------------------------------------------------------------===//// Instruction set description - These classes correspon
2014-03-04 15:18:15 4216
原创 LLVM(三):Tablegen简介
上一篇介绍实现llvm后端需要做的一些工作,有很大一部分工作是描述目标体系结构的特征,包括指令集,寄存器等信息。Tablegen就是用于记录这些信息的描述性语言。目标体系结构目录下的*.td文件都是用tablegen语言来描述的。经过tablegen工具批量生成C++源文件,它的好处就是我们描述的是大量信息的共同点,然后由工具批量生成,减少我们描述的工作量,使用tablegen语言也十分简单灵活。
2014-03-04 10:03:17 4444
原创 LLVM(二):后端结构
LLVM后端的功能就是处理LLVM IR(中间表达式)并生成目标机器指令。要实现一个LLVM编译器的后端需要以下步骤:1. 描述目标机器的特性2. 描述目标机器的寄存器3. 描述目标机器的指令集4. 描述指令选择器(也就是如何将IR转换成Target指令)5. 描述MC层(Machine code) 可选的步骤有:1.
2014-02-20 16:12:15 2366
原创 ARM内容简介
准备翻译下arm的指令集手册,自己也能做一个比较全面的学习,对于IOS的反汇编帮助还是比较大的。另:由于ARMCC工具链不开源,而其中又有很多值得学习的东西,准备把分析的ARMCC的一些东西也写到这里,有兴趣的也可以看看。
2014-02-20 14:06:02 687
原创 LLVM(一):简单介绍
本人对LLVM的学习主要在2013年,到现在已经有很长的时间没有接触了。俗话说的好:温故而知新,可以为师矣。llvm有很多值得学习的地方。LLVM和GCC的主要架构区别在于它采用了自己的中间代码形式,也就是llvm bitcode。前后端分离,启到的跨平台的作用,比如在android中的RSscript就是通过llvm前端clang类似的slang转换为llvm bitcode,存在于apk文
2014-02-20 13:43:27 2073
原创 简单写一个计划
今天是2014年2月19日,我决定从今天起开始更新博客。写博客主要目的就是为了记录工作和学习遇到的问题,再写一些心得和总结,留着自己以后回头看。今年准备写三方面的东西:1.LLVM2.GCC3.IOS时间有限,暂定一周至少写一篇吧,有时间再多写。就这样吧,身体第一,学习第二,早睡早起身体好
2014-02-19 22:55:32 638
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人