1.oc查看源码使用的Clang
命令行指令
// 假设原始文件为TestMain.m
// 预编译命令
clang -E TestMain.m -o TestMain.mi
// 生成AST语法树
clang -Xclang -ast-dump -fsyntax-only TestMain.m
// 生成IR中间代码
clang -S -emit-llvm TestMain.m -o TestMain.ll
// 生成IR中间代码并优化,
clang -o3 -S -emit-llvm TestMain.m -o TestMain.ll
// 如果开启bitcode,生成.bc文件,这也是中间码的一种形式
clang -emit-llvm -c TestMain.m -o TestMain.bc
// 产生汇编命令
clang -S TestMain.m -o TestMain.s
// 生成目标.o文件
clang -c TestMain.m -o TestMain.o
2. Swift查看源码使用的swiftc
命令行指令
// 假设原始文件为TestMain.swift
// 分析输出AST
swiftc TestMain.swift -dump-parse
// 分析并且检查类型输出AST
swiftc TestMain.swift -dump-ast
// 生成中间体语言(SIL),未优化
swiftc TestMain.swift -emit-silgen -o TestMain.sil
// 生成中间体语言(SIL),优化后的
swiftc TestMain.swift -emit-sil -o TestMain.sil
// 生成优化后的中间体语言(SIL),并将结果导入到TestMain.sil文件中
swiftc TestMain.swift -emit-sil -o TestMain.sil
// 生成优化后的中间体语言(SIL),并将sil文件中的乱码字符串进行还原,并将结果导入到TestMain.sil文件中
swiftc TestMain.swift -emit-sil | xcrun swift-demangle > TestMain.sil
// 生成LLVM中间体语言 (.ll文件)
swiftc TestMain.swift -emit-ir -o TestMain.ir
// 生成LLVM中间体语言 (.bc文件)
swiftc TestMain.swift -emit-bc -o TestMain.bc
// 生成汇编
swiftc TestMain.swift -emit-assembly -o TestMain.s
// 编译生成可执行.out文件
swiftc TestMain.swift -o TestMain.o