下载APP
登录
关闭
讲堂
算法训练营
Python 进阶训练营
企业服务
极客商城
客户端下载
兑换中心
渠道合作
推荐作者

手绘图解iOS核心知识点

2019-03-26 戴铭
 写留言

精选留言(19)

  • 陈皓 置顶
    2019-03-25
    活动已结束,恭喜解读精彩的3位:「卓小土、Zion W.、Elan」获得本专栏免单名额。请添加管理员微信:geektime002兑奖。
    1
  • 2019-03-20
    龙肯定不用说啦,llvm,编译器前端parser和token解析成ast树输出中间码,这里可以有很多静态检查,可以各个语言各自实现,后端生成机器码,这里可以做大量的代码优化,最后是link的过程,把各个.o文件组装成最终的输出文件。其实我完全不懂编译原理,道听途说蒙一下。
    3
  • 2019-03-21
    抛开llvm\clang的一些工具组件,这张图基本涵盖了llvm\clang的主流程。
    llvm的前端部分clang,脱胎于对C系语言的编译,C\C++\OC是其最主要的客户语言(python后面可能也会被纳入进来)。
    预处理、词法分析、生成符号表工作与gcc相差无几,基本由流行的工具完成。语法分析、语义分析是clang比较有特色的部分,尤其是在编译过程中生成AST(抽象语法树)这一特色能力,能够深入和拓展编程语言,是帮助实现语言分析、自定义逻辑检查、元编程等各种工具的利器。

    前端的输出结果是IR(中间表示),它是各种编程语言的输出,也是各种机器码的输入。它就像一个接口(协议),将前端和后端两个组件进行解耦。

    后端技术主要是根据IR生成机器码的过程,中间涉及到许多优化。这块技术比较专,涉猎不多。与iOS开发相关的就是bitcode文件,它是iOS平台上的一种优化手段,主要凭借的就是其动态下发及解释执行的能力,具体可参考工具lli。对.bc文件继续编译(或者叫转义估计也可以)生成我们熟悉的.o文件,最终链接生成我们需要的产物。


    最重要的还得夸下大神,这条龙相比于llvm的logo,画的更好看。
    展开
    2
  • 2019-03-21
    龙具有力量,速度和智能,也具有时尚,优雅和模块化的特点,是LLVM的化身。不得不说戴铭老师画的很形象^_^,通过C、C++、Object-C进行输入,在编译前端进行词法分析输出token流,语法分析得到中间代码(IR)优化过后作为编译后端的输入,编译后端会进行机器无关的代码优化,生成机器语言,并且进行机器相关的代码优化,最后进行输出
    1
  • 2019-03-20
    请教一下大大,编译原理图是用什么工具画的?
    1
  • 2019-03-20
    我是来学手绘的!
    1
  • 2019-03-20
    这篇真棒,在专栏里怎么看不到呢?
    1
  • 2019-03-22
    词法->语法->语义->IR->优化->CodeGen
  • 2019-03-21
    将语法树翻译成 LLVM IR 中间代码,做为 LLVM Backend 输入的桥接语言。
  • 2019-03-21
    编译时,LLVM 会首先预处理代码。
    预处理完后,LLVM 会对代码进行词法分析和语法分析,生成 AST 。
    AST 是抽象语法树,结构上比代码更精简,遍历起来更快,所以使用 AST 能够更快速地进行静态检查,同时还能更快地生成 IR(中间表示)。
    AST 生成 IR之后,通过 IR 可以生成多份适合不同平台的机器码。
    这其中需要链接各种文件。
    大概就是这个过程。
    展开
  • 2019-03-21
    hello雪均
  • 2019-03-21
    看了三遍,讲得很清晰
  • 2019-03-21
    以漫画图方式讲解oc难懂的底层知识,生硬的知识点变成了生动形象,看来要不但止要成为和合格的iOS开发还要成为一个漫画家,哈哈
  • 2019-03-21
    有关 llvm 的资料实在是太缺乏了,网上可以搜集到的资料也非常的少,要么就都是高深莫测,不适合新手入门,或者晦涩难懂的机器翻译,佶屈聱牙,恍若天书
  • 2019-03-21
    学习图绘ios,容易你,我,他。
  • 2019-03-21
    图完美现示了人可以看懂的code源码到汇编代码,机器码过程
  • 2019-03-20
    这个👍
  • 2019-03-20
    这个手绘是用什么软件渲染的
  • 2019-03-20
    '果然优秀的人做什么都优秀