iOS学习笔记

Swift 的SIL语言是什么?

2021-02-25  本文已影响0人  DingGa

SIL

在底层流程中,OC代码和SWift代码时通过不同的编译器进行编译,然后通过LLVM,生成.o可执行文件,如下所示

image.png

Swift编程语言是在LLVM上构建,并且使用LLVM IR和LLVM的后端去生成代码。但是Swift编译器还包含新的高级别的中间语言,称为SIL。SIL会对Swift进行较高级别的语义分析和优化。

SIL是为了实现swift编程语言而设计的,包含高级语义信息的SSA格式的中间语言.SIL包含以下功能:

一系列的高级别优化保障,用于对运行时和诊断行为提供可预测的底线

对swift语言数据流分析强制要求,对不满足强制要求的问题产生诊断。例如变量和结构体必须明确初始化,代码可达性即方法return的检测,switch的覆盖率

  • 确保高级别优化。包含retain/release优化,动态方法的去虚拟化(devirtualization,不了解虚函数可以查看之前文章static vs dynamic dispatch),闭包内联,内存初始化提升和泛型方法实例 化.

可用于分配"脆弱"内联的稳定分配格式,将Swift库组件的泛型优化为二进制。

image.png

我们可以通过swiftc -h终端命令,查看swiftc的所有命令:

swiftc -dump-ast xxx.swift

将某个Swift文件转化生成指定的SIL文件:

swiftc -emit-sil xxx.swift >> ./main.sil && code xxx.sil

这样我们就可以看到一些,中间的语言,从而看清Swift的一些内部操作,便于理解代码执行过程中发生了什么.

大家可以自己测试一下.

上一篇下一篇

猜你喜欢

热点阅读