Swift编译流程、查看汇编语言的方式❤️1

2020-09-03  本文已影响0人  黄成瑞

一、一些基本概念

扩展:ABI的稳定,也就意味着Swift语法基本不会有太大的变化了

二、Swift编译流程

Swift编译流程详细:
  SwiftCode代码 -> Swift AST语法树 -> Raw Swift IL特有中间代码 -> Canonical Swift IL特有简洁中间代码 -> LLVM IR中间代码  -> Assembly汇编代码 -> Executable二进制

三、查看汇编语言

1.新建一个Swift命令行项目
2.终端cd到项目文件路径中
3.1.生成语法树:swiftc -dump-ast xxx.swift
3.2.生成SIL最简洁代码:swiftc -emit-sil xxx.swift
3.3.生成LLVM IR代码:swiftc -emit-ir xxx.swift -o xxx.ll
3.4.生成汇编代码:swiftc -emit -assembly main.swift -o main.s(这个很重要,可以看底层它都做了什么事情)
3.5.*** XCode下断点、工具栏选择Debug、Debug Workflow、Always Show Disassembly
1.源码:(OC项目举例,Swift同理哦)
int c = sizeof(int);

2.生成汇编代码:(如何生成,参考上面👆3.5的操作噢~)
0x100000f3b <+27>: movl    $0x4,  -0x14(%rbp)

3.开始分析:
 -0x14(%rbp):这个是变量c的内存空间
$0x4:立即数,4,说白了就是将4赋值给c

4.浅层扩展:
int c = sizeof(int); 等价与 int c = 4;

5.深度扩展:
callq:这代表的是函数调用
movl:mov long - 字长传送 - 32位
movw:mov word:字传送 - 16位
movb:mov byte:字节传送 - 8位
addq:加法指令
上一篇 下一篇

猜你喜欢

热点阅读