编译器

LLVM 编译器 原理解析, 插件编写

2018-08-16  本文已影响58人  咖啡豆8888

前言

编译器

Clang

OC源文件的编译过程

  1. 查看编译过程指令
    clang -ccc-print-phases main.m

    编译过程
  2. 查看preprocessor(预处理)的结果,替换全局变量,词法/语法分析等
    clang -E main.m

    编译预处理
    • 词法分析指令:(作用是每个单词会生成一个token)
      clang -fmodules -E -Xclang -dump-tokens main.m
      词法分析
    • 生成语法树
      clang -fmodules -fsyntax-only -Xclang -ast-dump main.m
      语法树
  3. 生成中间代码
    LLVM IR 有三种标识形式,但本质上是等价的,好比水可以是气态,液态,固态

    • text,便于阅读的文本格式,类似汇编语言,扩展名是.ll
      clang -S -emit-llvm main.m
    • 内存格式
    • 二进制格式,扩展名.bc
      clang -c -emit-llvm main.m
      中间代码text格式
    • IR的基本语法:
1.注释是以;开头的
2.全局标识符以@开头,局部标识符以%开头
3.alloca,在当前函数栈帧中分配内存
4. i32,  32bit,4个字节的意思
5. align 内存对齐
6. store,写入数据
7. load 读取数据

更多指令

未完待续....

上一篇 下一篇

猜你喜欢

热点阅读