(一)生成CIL文件
1. OC - Clang 来查看底层原理
2. swift - swiftC 生成SIL文件来查看底层原理。
常用swiftc命令
- 生成可执行文件:
swiftc -o main.out main.swift
- 生成抽象语法树的命令(AST):
swiftc main.swift -dump-ast
- 生成中间语言(SIL):
swiftc main.swift -emit-sil
- LLVM中间表示层(LLVM IR):
swiftc main.swift -emit -ir
- 生成汇编语言:
swiftc main.swift -emit-assembly
其它命令你可以通过swiftc -h
获得帮助
1. 打开xcode - 生成一个 swift文件,输入
class Person {
var age: Int = 18
var name: String = "zgr"
func helloAction() -> () {
print("hellow world")
}
}
var p = Person()
p.age = 20
2. 在终端进入这个swift文件目录下输入下面命令生成cil文件。
swiftc -emit-sil main.swift
3. 在swift文件同目录下就可以查看生成的 main.sil文件啦,部分内容如下。
import Builtin
import Swift
import SwiftShims
import Foundation
class Person {
@_hasStorage @_hasInitialValue var age: Int { get set }
@_hasStorage @_hasInitialValue var name: String { get set }
func helloAction()
init()
@objc deinit
}
@_hasStorage @_hasInitialValue var p: Person { get set }
// p
sil_global hidden @main.p : main.Person : $Person
4. 在 cil文件下查看会有很多毫无规则的命名法,通过一下命令可以还原命令。
swiftc -emit-sil main.swift | xcrun swift-demangle
(二)利用脚本自动生成SIL文件。
工程根目录 - TARGETS -- build phases -- 点 + 号,添加一个脚本组件。
swiftc -emit-sil 项目名/main.swift | xcrun swift-demangle > ./main.sil && open main.sil