淺談LLVM編譯器

GCC

Xcode 最早的編譯器(Xcode 3.0及之前版本)不太智能获讳,因?yàn)楫?dāng)時(shí)Xcode 當(dāng)前的編譯器是GCC窖逗,盡管GCC是一個(gè)相對較好的編譯器搞旭,但是他跟IDE 之間的匹配性并不是太好榕莺。通常普气,編譯器分為編譯器前端和編譯器后端谜疤。編譯器前端主要負(fù)責(zé)的是展開預(yù)處理器宏定義 并將源代碼轉(zhuǎn)化為中間代碼。編譯器后端負(fù)責(zé)生成并優(yōu)化機(jī)器代碼现诀。GCC實(shí)質(zhì)上是一個(gè)后端編譯器夷磕,他負(fù)責(zé)將源代碼編譯生成二進(jìn)制代碼。GCC 主要用來編譯代碼仔沿,而不是解析代碼坐桩。這意味著蘋果必須編寫自己的解析器來為你提供調(diào)試功能。另外封锉,GCC 使用的是 GPL 許可協(xié)議绵跷,這使得蘋果不能直使用GCC,除非蘋果將Xcode 的許可協(xié)議更改為GPL成福。由于蘋果的解析器和 GCC 的基準(zhǔn)代碼不同碾局,GCC 和 Xcode 之間經(jīng)常會出現(xiàn)一些不一致。

LLVM-Clang

由于上面的這個(gè)問題奴艾,蘋果在Xcode 4.2 之后 同iOS 5 一起發(fā)布净当,默認(rèn)的編譯器就是 LLVM 3.0 了。雖然 LLVM 的代碼生成效率不如 GCC蕴潦, 但是 LLVM 具有更好的模塊化和可擴(kuò)展性像啼,編譯速度也是GCC的兩倍以上,有許多為LLVM 而開發(fā)的編譯器前端潭苞,其中比較突出就是蘋果的C language(即 Clang)忽冻。Clang 支持增量編譯。開始使用 Xcode 4 的時(shí)候此疹,你就會發(fā)現(xiàn)這個(gè)功能比較實(shí)用僧诚。另外,clang 的模塊化使得它得以非常好地支持代碼重構(gòu)以及 Edit All in scope 等功能蝗碎。也因此 LLVM 和 IDE 的深度集成使 Xcode 在編譯器遇到錯誤的時(shí)候可以給iOS developer 提供 Fix-it 的功能湖笨。
如下圖 所示:


屏幕快照 2017-05-08 上午11.42.49.png

同時(shí)蘋果從 GCC 切換到 LLVM 的另一個(gè)目的是對 Objective-C 語言擁有更大的控制權(quán)。蘋果通過添加對字面量大支持使得 Objectvie-C 更加簡潔衍菱,也許只有對編輯器擁有控制權(quán),蘋果才能對語言作出這種改變肩豁,同樣也是 LLVM 給了蘋果 這種改變 Objective-C 語言的能力脊串。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末辫呻,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子琼锋,更是在濱河造成了極大的恐慌放闺,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缕坎,死亡現(xiàn)場離奇詭異怖侦,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)谜叹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門匾寝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人荷腊,你說我怎么就攤上這事艳悔。” “怎么了女仰?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵猜年,是天一觀的道長。 經(jīng)常有香客問我疾忍,道長乔外,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任一罩,我火速辦了婚禮杨幼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘擒抛。我一直安慰自己推汽,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布歧沪。 她就那樣靜靜地躺著歹撒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪诊胞。 梳的紋絲不亂的頭發(fā)上暖夭,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天,我揣著相機(jī)與錄音撵孤,去河邊找鬼迈着。 笑死,一個(gè)胖子當(dāng)著我的面吹牛邪码,可吹牛的內(nèi)容都是我干的裕菠。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼闭专,長吁一口氣:“原來是場噩夢啊……” “哼奴潘!你這毒婦竟也來了旧烧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤画髓,失蹤者是張志新(化名)和其女友劉穎掘剪,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體奈虾,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡夺谁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了肉微。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片匾鸥。...
    茶點(diǎn)故事閱讀 38,599評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖浪册,靈堂內(nèi)的尸體忽然破棺而出扫腺,到底是詐尸還是另有隱情,我是刑警寧澤村象,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布笆环,位于F島的核電站,受9級特大地震影響厚者,放射性物質(zhì)發(fā)生泄漏躁劣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一库菲、第九天 我趴在偏房一處隱蔽的房頂上張望账忘。 院中可真熱鬧,春花似錦熙宇、人聲如沸鳖擒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蒋荚。三九已至,卻和暖如春馆蠕,著一層夾襖步出監(jiān)牢的瞬間期升,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工互躬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留播赁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓吼渡,卻偏偏與公主長得像容为,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評論 2 348

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