如果 Swift 是 Obj-C 的一个变种环境,那么做成 Swift -> Obj-C -> 汇编 我不觉得有什么不妥。
rainex
2015-10-14 02:29:32 +08:00
@sherlocktheplant 是不是这种搞法没细看,但这搞法倒也有先例, C++ Builder 就是先把代码翻译成 Pascal ,用成熟的 Delphi 编译器来生成 Windows 的可执行代码,估计还是有时间和维护成本的问题,不然要说做写编译器,当时 Borland 公司里可是一帮好手,未必比 Apple 弱。
@msg7086 缺点还是有的,多转换一步肯定要慢一点,除非代码量少, C++ Builder 的用户为这个没少骂。
@Ixizi 编译分为前端和后端,对于 Swift 来说,和 Objective-C 编译上的区别主要在前端(废话...后端的话 LLVM 能编译的语言都是一样的...)。 Swift 编译器先把 Swift 源码转换为 SIL ,就是上面 @sherlocktheplant 说的 Swift Intermediate Language 。 SIL 基本就是对 Swift AST 的组织,然后中间多了一步从 SIL 优化生成 LLVM IR 。到这里之后的后端的话,是和 objc 的处理基本是一样的,因为输入的同样是 LLVM IR 。