Swift-SIL调试
SIL
用法
生成SIL文件
1 | swiftc -emit-sil main.swift >> ./main.sil |
阅读SIL
- @main这里标识我们当前main.swift的入口函数,SIL 中的标识符名称以@作
为前缀 - %0,%1…在SIL也叫做寄存器,这里我们可以理解为我们日常开发中的常量,一旦赋值之后就不可以再修改,如果SIL中还要继续使用,那么就不断的累加数字。同时这里所说的寄存器是虚拟的,最终运行到我们的机器上,会使用真的寄存器。
- alloc_global创建一个全局变量
- global_addr拿到全局变量的地址
- metatype拿到LGTeacher的Metadata
- apply 代表调用方法,类似于objc里面的objc_msgSend函数
- alloc_ref创建某一个类型的实例对象,当前实例对象引用计数为1
- 乱码的字符串,执行如下代码恢复
1
xcrun swift-demangle s4main7TeacherC3ageSivg
- %1, %2
这些可以理解为虚拟的寄存器,或者理解为常量(赋值之后不会改变)