Swift学习01:Swift编译流程
编译器架构
Swift编译过程和OC基本类似,仅仅是前端编译器不一样。
OC/C
前端编译器是Clang
Swift
先解析成Swift AST
(抽象语法树),通过swiftc
这个命令行参数,编译成Swift IL
OC
和Swift
最后均编译成LLVM IR
中间层表示OC
和Swift
最终通过 后端编译器LLVM compiler
,编译成最终的在具体地址上可以执行的二进制,包括x86、arm和other
详细编译流程
- Swift 先解析成
AST(抽象语法树)
- 经过一系列工具编程
Swift
的SIL(中间语言)
- 再经过
分析、IR工具
转成LLVM IR(中间表示层)
- 最终通过 后端编译器 LLVM compiler 编译成 .o 目标文件
命令行流程
使用终端创建一个简单的 main.swift
文件
1 | mac@bogon ~ % cd Desktop |
此时你可以在桌面看到一个 main.swift
文件
在该文件下写下两个数相加的一个函数
1 | func sum(a:Int,b:Int) -> Int { |
- 打开命令行工具
mac@bogon ~ % cd Desktop
- 生成
AST
抽象语法树
mac@bogon ~ % swiftc main.swift -dump-ast
- 生成
SIL
中间语言
mac@bogon ~ % swiftc main.swift -emit-sil
- 生成 LLVM IR 中间表示层
mac@bogon ~ % swiftc main.swift -emit-ir
- 生成 Assembly Language 汇编语言
mac@bogon ~ % swiftc main.swift -emit-assembly
- 生成二进制文件
mac@bogon ~ % swiftc -o main.out main.swift
命令行输入:
1 | mac@bogon ~ % cd /Users/mac/Desktop/01swift编译流程 |
- Post title:Swift学习01:Swift编译流程
- Post author:张建
- Create time:2023-02-21 23:49:55
- Post link:https://redefine.ohevan.com/2023/02/21/Swift课程/Swift学习01:Swift编译过程/
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.