前面介绍了许多编译器架构上面的特点,如何组织语法树、如果多遍扫描语法树。今天开始,我们就要设计本编译器中最核心的部分了,如何设计一个编译时宏,再利用LLVM按顺序生成模块。...
分类:
其他好文 时间:
2015-11-11 10:08:59
阅读次数:
359
IOS 百度地图导入最新2.9SDK 报错 _baidu_framework::HandleBasemapMerge(_baidu_vi::CVString const 解决: 因为XCode默认使用的C++标准库是苹果自己的libc++(LLVM C++ standard library with c++11 support),而...
分类:
移动开发 时间:
2015-11-10 17:52:54
阅读次数:
816
上次我们看了Lex和Yacc的翻译文件,可能一些朋友并不了解其中的执行部分,而且,对这个抽象语法树是怎么构建起来的还不清楚。今天我们就再详细介绍一下如果方便的构建一棵抽象语法树(AST)...
分类:
其他好文 时间:
2015-11-10 12:33:10
阅读次数:
385
llvm 学习总结#1Type define int类型 IntegerType::get(mod->getContext(), 32) long类型 IntegerType::get(mod->getContext(), 64) double类型 Type::getDoubleTy(mod-...
分类:
其他好文 时间:
2015-11-06 17:53:53
阅读次数:
431
我们在iOS调试中经常会看到Clang这个,那么Clang到底是什么呢?我们来简单了解一下。 Clang是一个C、C++、OC语言的轻量级编译器。源代码发布于BSD协议下。Clang是由C++编写,基于LLVM,发布于LLVM BSD许可证下的编译器。它与GNU C语言规范几乎完全兼容,并增加了额外...
分类:
其他好文 时间:
2015-10-30 14:04:18
阅读次数:
217
微软最近发布将在2015年11月VisualC++更新中加入Clang编译器,Clang开源编译器以相比GCC更快的编译速度和更优的错误提示著称。Clang关于C,C++,及ObjectiveC的编译器,能够生成LLVM的中间代码,是支持跨平台编译的开源项目。起初Clang只支持Apple开发,在2007年开源。目前,Goo..
分类:
编程语言 时间:
2015-10-27 15:25:56
阅读次数:
221
LLVM 的 IR (Intermediate Representation) 是其设计中的最重要的部分。优化器在进行代码优化时所进行的分析和转换都是针对 IR 的。
分类:
其他好文 时间:
2015-10-25 14:56:59
阅读次数:
195
采用 three-phase 的设计方式,便于编译器支持多种语言和多种目标平台。
分类:
其他好文 时间:
2015-10-24 11:30:24
阅读次数:
127
ARC是“由编译器进行内存管理”的,但实际上只有编译器是无法完全胜任的,在此基础上还需要Objective-C运行时库的协助。也就是说,ARC由以下工具、库来实现。 1)clang(LLVM编译器)3.0以上; 2)objc4 Objective-C运行时库493.9以上;id __strong.....
分类:
其他好文 时间:
2015-10-23 16:05:30
阅读次数:
232
1.介绍 Block是一个C Level的语法以及运行时的一个特性,非常像标准C中的函数(函数指针),但是其运行需要编译器和运行时支持,目前LLVM+Clang可以很好的支持Block(苹果修改过的GCC也可以)。Block和函数不同的是其语义闭包特性,以及可以有匿名block的存在。 你可以在LL...
分类:
其他好文 时间:
2015-10-22 10:44:55
阅读次数:
167