本博客涉及自己学习过程中用到的一些网站,很多东西并非原创,只是总结了一下自己的学习过程和遇到的问题及其解决方案。详细内容请看网址。
**1.**在centos7上安装LLVM+CLANG。https://www.cnblogs.com/BinBinstory/p/7499527.html
开始之前需要了解一下llvm的源码目录结构,这对后面熟悉llvm很有用
https://blog.csdn.net/chikey/article/details/85013450 llvm源码目录结构
2.开始使用llvm+clang
首先:在你自己工作的工作目录新建一个hello word.c文件,之后如下操作:
cat查看c文件内容 clang编译文件(有错会提示错误信息,无错会产生.out文件)
subl 使用sublime打开文件按照编译结果进行修改,修改结果如黑色图所示
./直接执行编译产生的文件
3.编译过程
1)查看编译过程的各个指令
0:输入 1:预处理 2:编译器编译生产中间代码 3:汇编 4:链接动态静态库
2)查看预处理的结果:$clang -E main.m
因为helloword程序没有宏定义,所以显示还是与原程序相同,
新建一个hello.c文件,代码如下第一张图,预处理结果如下第二张图:
可以发现,预处理阶段已经将宏定义给修改了;AGE直接用40表示;
3)词法分析,语法分析,生产AST。
4)生成llvm IR,三种方式。
$ clang min.c -emit-llvm -S -c -o min.ll .ll文本格式
$ clang -S -emit-llvm helloword.c .ll文本格式
$ clang min.c -emit-llvm -c -o min.bc .bc 二进制格式
$ llvm-as min.ll -o min.bc .ll转换为.bc
$ llvm-dis min.bc -o min.ll .bc转换为.ll