Swift 進(jìn)階(一)基礎(chǔ)語法

Swift簡介

在學(xué)習(xí)Swift之前甸赃,我們先來了解下什么是Swift

Swift是Apple在2014年6月WWDC發(fā)布的全新編程語言,中文名和LOGO是”雨燕“

Swift之父是Chris Lattner胸嘴,也是Clang編譯器的作者,LLVM項(xiàng)目的主要發(fā)起人

Swift版本

Swift歷時(shí)七年斩祭,從Swift 1.*更新到Swift 5.*劣像,經(jīng)歷了多次重大改變,ABI終于穩(wěn)定

API(Application Programming Interface):應(yīng)用程序編程接口

  • 源代碼和庫之間的接口

ABI(Application Binary Interface):應(yīng)用程序二進(jìn)制接口

  • 應(yīng)用程序和操作系統(tǒng)之間的底層接口
  • 涉及的內(nèi)容有:目標(biāo)文件格式摧玫、數(shù)據(jù)類型的大小/布局/對齊耳奕,函數(shù)調(diào)用約定等

Swift是完全開源的,下載地址:https://github.com/apple/swift

Swift編譯原理
LLVM編譯器
LLVM編譯器一般分為前端和后端

前端:主要進(jìn)行詞法分析诬像,生成語法樹
后端:生成對應(yīng)平臺的二進(jìn)制代碼
編譯流程
我們知道OC的前端是通過Clang進(jìn)行編譯的屋群,Swift的前端是通過swiftc來編譯的

不同語言的前端可能不同,但最終都會(huì)通過編譯器的后端生成對應(yīng)平臺的二進(jìn)制代碼


下載.jpeg

整個(gè)編譯流程如下圖所示


下載 (1).jpeg
  • Swift Code:我們編寫的Swift代碼
  • Swift AST:Swift語法樹
  • Raw Swift IL:Swift特有的中間代碼
  • Canonical Swift IL:更簡潔的Swift特有的中間代碼
  • LLVM IR:LLVM的中間代碼
  • Assembly:匯編代碼
  • Executable:二進(jìn)制代碼

關(guān)于Swift編譯流程的詳細(xì)講解可以參考以下網(wǎng)址:https://swift.org/swift-compiler/#compiler-architecture

swiftc

我們打開終端坏挠,輸入swiftc -help芍躏,會(huì)打印出相關(guān)指令,這也說明了swiftc已經(jīng)存在于Xcode中

截屏2022-04-06 下午1.59.28.png

我們可以在應(yīng)用程序中找到Xcode降狠,然后右鍵顯示包內(nèi)容对竣,通過該路徑找到swiftc

路徑:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin


下載 (2).jpeg
下載 (3).jpeg

swiftc的基本操作演練
下面我們可以通過一些swiftc的一些基本操作來了解

1.我們先新建一個(gè)Swift的命令行項(xiàng)目


下載 (4).jpeg

下載 (5).jpeg

2.然后打開終端,cd到main.swift路徑
3.然后我們輸入swiftc -dump-ast main.swift喊熟,來查看下生成的語法樹
4.我們還可以輸入swiftc -emit-sil main.swift生成最簡潔的SIL代碼
5.我們還可以輸入swiftc -emit-ir main.swift生成LLVM IR中間代碼
6.我們還可以輸入swiftc -emit-assembly main.swift生成匯編代碼

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末柏肪,一起剝皮案震驚了整個(gè)濱河市姐刁,隨后出現(xiàn)的幾起案子芥牌,更是在濱河造成了極大的恐慌,老刑警劉巖聂使,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件壁拉,死亡現(xiàn)場離奇詭異谬俄,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)弃理,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進(jìn)店門溃论,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人痘昌,你說我怎么就攤上這事钥勋。” “怎么了辆苔?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵算灸,是天一觀的道長。 經(jīng)常有香客問我驻啤,道長菲驴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任骑冗,我火速辦了婚禮赊瞬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘贼涩。我一直安慰自己巧涧,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布遥倦。 她就那樣靜靜地躺著褒侧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谊迄。 梳的紋絲不亂的頭發(fā)上闷供,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天,我揣著相機(jī)與錄音统诺,去河邊找鬼歪脏。 笑死,一個(gè)胖子當(dāng)著我的面吹牛粮呢,可吹牛的內(nèi)容都是我干的婿失。 我是一名探鬼主播,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼啄寡,長吁一口氣:“原來是場噩夢啊……” “哼豪硅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起挺物,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤懒浮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體砚著,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡次伶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了稽穆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冠王。...
    茶點(diǎn)故事閱讀 40,615評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖舌镶,靈堂內(nèi)的尸體忽然破棺而出柱彻,到底是詐尸還是另有隱情,我是刑警寧澤餐胀,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布绒疗,位于F島的核電站,受9級特大地震影響骂澄,放射性物質(zhì)發(fā)生泄漏吓蘑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一坟冲、第九天 我趴在偏房一處隱蔽的房頂上張望磨镶。 院中可真熱鬧,春花似錦健提、人聲如沸琳猫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽脐嫂。三九已至,卻和暖如春紊遵,著一層夾襖步出監(jiān)牢的瞬間账千,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工暗膜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留匀奏,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓学搜,卻偏偏與公主長得像娃善,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子瑞佩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評論 2 359

推薦閱讀更多精彩內(nèi)容