主要是針對Swift5.1,基礎(chǔ)語法,和內(nèi)部剖析。
基礎(chǔ)語法
為什么選擇Swift5.1
- 歷時(shí)5年發(fā)展,從Swift1.x發(fā)展到Swift5.x,經(jīng)歷了多次重大改變,ABI終于穩(wěn)定
-
API
(Application Programming Interface):應(yīng)用程序編程接口- 源代碼和庫之間的接口
-
ABI
(Application Binary Interface):應(yīng)用程序二進(jìn)制接口- 應(yīng)用程序與操作系統(tǒng)之間的底層接口
- 涉及內(nèi)容有:目標(biāo)文件格式、數(shù)據(jù)類型的大小/布局/對齊、函數(shù)調(diào)用約定等等
- Swift是完全開源的 https://github.com/apple/swift 主要采用C++編寫
編譯流程
參考地址 https://swift.org/compiler-stdlib/
編譯流程
swiftc
何為swiftc:
- swiftc存放在Xcode內(nèi)部
- Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
- 基本操作
- 生成語法樹: swiftc -dump-ast main.swift
- 生成最簡潔的SIL代碼:swiftc -emit-sil main.swift
- 生成LLVM IR代碼: swiftc -emit-ir main.swift -o main.ll
- 生成匯編代碼: swiftc -emit-assembly main.swift -o main.s
Xcode中創(chuàng)建一個(gè)Swift工程,swift從第一行有效的函數(shù)開始運(yùn)行
import Foundation
print("Hello, World!")
在終端使用swiftc -dump-ast main.swift
語法生成語法樹,其他類似可以自己嘗試
語法樹