美文网首页iOS学习笔记
Swift 的SIL语言是什么?

Swift 的SIL语言是什么?

作者: DingGa | 来源:发表于2021-02-25 23:25 被阅读0次

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的一些内部操作,便于理解代码执行过程中发生了什么.

大家可以自己测试一下.

相关文章

  • Swift 的SIL语言是什么?

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

  • Swift类、对象、属性

    Swift编译简介 SIL介绍 SIL是Swift Intermediate Language的简写,SIL会对S...

  • Swift的高级中间语言:SIL

    简介 在LLVM的官方文档中对Swift的编译器设计描述如下: Swift编程语言是在LLVM上构建,并且使用L...

  • SIL optimizer - string append 优化

    简单介绍 这是最近Swift开发人员对Swift String进行的一个优化,PR地址SIL optimizer:...

  • swift-获取sil、ast编译中间产物文件

    获取sil文件 从swift文件到可执行文件.o的整个编译过程。 swift编译过程参考[https://trin...

  • 逃逸闭包、非逃逸闭包

    在开始逃逸闭包与非逃逸闭包之前,先普及一个知识点,即如果编译成SIL文件: 编译成SIL文件: swift使用的编...

  • Swift’s use of SIL

    Swift 是一门静态语言,在 Swift 中声明的方法和属性静态编译期就确定了的,并且Swift具有更灵活的高级...

  • swift底层 - 初识SIL

    历时5年发展,从Swift1.x发展到了Swift5.x版本,ABI终于稳定了 ABI(Application B...

  • Swift day-1

    生成语法树:swiftc-dump-ast main.swift 生成最简洁的SIL代码:swiftc -emit...

  • Swift-02:类、对象、属性

    本文主要介绍以下几点 通过SIL来理解对象的创建 Swift类结构分析 存储属性 & 计算属性 延迟存储属性 & ...

网友评论

    本文标题:Swift 的SIL语言是什么?

    本文链接:https://www.haomeiwen.com/subject/edypfltx.html