Clang - Animenzzzz/Study GitHub Wiki

Clang是Xcode的编译器

写完的.m文件 —> clang分析检查 —>clang将其转化成LLVM IR代码

bogon:Desktop animenzzzzzz$ clang -ccc-print-phases aaa.m
  1. input, "aaa.m", objective-c
  2. preprocessor, {0}, objective-c-cpp-output
  3. compiler, {1}, ir
  4. backend, {2}, assembler
  5. assembler, {3}, object
  6. linker, {4}, image
  7. bind-arch, "x86_64", {5}, image

预处理:将代码中的 #import 用对应的具体内容替换

语法解析标记

解析:之前生成的标记流将会被解析成一棵抽象语法树

静态分析

类型检查

代码生成。生成LLVM

参考:

https://objccn.io/issue-6-2/