Swift学习(一) : 版本历史,编译流程

Swift历史

  • 历时5年发展,从Swift1.x发展到了Swift5.x版本,经历了多次重大改变,ABI终于稳定
  • API(Application Programming Interface):应用程序编程接口: 源代码和库之间的接口
  • ABI(Application Binary Interface):应用程序二进制接口:
  1. 应用程序与操作系统之间的底层接口
  2. 涉及的内容有:目标文件格式、数据类型的大小\布局\对齐、函数调用约定等等
  • 随着ABI的稳定,Swift语法基本不会再有太大的变动,此时正是学习Swift的最佳时刻 
  •  截止至2019年6月,目前最新版本:Swift5.1
  • Swift完全开源: https://github.com/apple/swift,主要采用C++编写

-------------------------------------------------------------------------------------------------------------------------------

Swift编译流程

首先我们要知道编译器分为前端和后端:

前端:词法分析

后端:生成对应平台的二进制代码

Swift与OC和C的编译流程区别:C和OC编译器的前端是Clang,也就是以前的OC代码通过Clang这个编译器的前端进行处理,转交给LLVM这个编译器的后端,最后生成ARM的二进制代码。而Swift的编译器的前端是swiftc,通过swiftc进行词法分析和语法树处理,然后交给LLVM的后端编译器,最后生成ARM格式的二进制代码。

具体的编译流程:

Swift代码-->通过swiftc生成Swift AST(Swift语法树)-->Raw Swift IL(Swift特有的中间代码)-->Canonical Swift IL(更简洁的Swift代码)-->转交给后端生成LLVM代码-->Assembly(汇编代码)-->Executable(二进制代码)。
-------------------------------------------------------------------------------------------------------------------------------

Swiftc

  • swiftc存放在Xcode内部pContents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
  • 一些操作
  1. 生成语法树: swiftc -dump-ast main.swift 
  2. 生成最简洁的SIL代码:swiftc -emit-sil main.swift 
  3. 生成LLVM IR代码: swiftc -emit-ir main.swift -o main.ll 
  4. 生成汇编代码: swiftc -emit-assembly main.swift -o main.s
  •  对汇编代码进行分析,可以真正掌握编程语言的本质
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值