CompilerDev 板


LINE

应版友要求 来列个简单的新手指南和书单好了 首先我个人非常不推 Dragon Book,原因在於他花太多时间在讲 Lex/Parse 了 而且也非常多章节都过时了 用字遣词方面也显得过於学究不好懂 (Lex/Parse是必须学 但由於现代程式语言不像C/C++,基本上用top-down parser就可以 解决 而top-down parser老实讲不需要什麽domain knowledge 所以在学习的过程 个人认为不要花太多时间在 Lex/Parse上) Engineering a Compiler 个人认为这本书算是比较平衡 也能够陪伴你比较久的新手教科书: https://www.amazon.com/Engineering-Compiler-Keith-Cooper/dp/012088478X Building an Optimizing Compiler 上面那本书的後半章节已经有涵盖 IR 以及 backend,如果您想在 IR optimization (通常我都会称为"middle-end")方面有更深入了解的话 有一本不错的入门书: https://tinyurl.com/ybvs54mr 这本书还蛮薄的 程度的话大概只比 Engineering a Compiler 深一些些 算是一本 很不错的衔接用书 阅读原始码 很可惜,就小弟所知 再接下去就没有「普通」书可以读了 我个人在这之後就是阅读 大量的原始码和paper。其中原始码特别有帮助 不仅你可以知道怎麽实作 也可以深切 感受到学术与产业界在实务需求的差别 例如:在提到 pointer/alias analysis的时候 文献一定会提到 Anderson/Steengaards 的演算法,但在LLVM里面....两者预设 都没开启XDD 最大的原因在於最普通、依靠一堆手写规则/heuristic的 alias analysis 就已经「够好了」,用前述的两个演算法不仅花时间 成果也不见得比较好 至於要挑选GCC还是LLVM来阅读,由於我还真的完全没读过GCC的原始码(掩面 就不方便比较两者的优缺点。如果就单讲LLVM的话,因为他用的是 modern C++ (C++14)来开发,而且都有把最新的 feature 发挥得淋漓尽致,也将抽象的idea用物件 包装起来,所以个人认为比较容易理解。除此之外 也是个学习良好C++ programming 习惯的优良范本。但您大概也知道 LLVM专案的规模以接近指数倍的速度增长 如果第一次看到大概感觉像是迷宫一样,因此改天我会写个简单的原始码研读指南 系统架构相关书籍 即便 compiler 底下有分很多子领域,但最常见的依然是面向系统底层的需求,例如 针对某个特殊硬体功能做优化。因此熟悉处理器架构基本上也算必修课题之一 相信各位大学一定修过 Computer Architecture,用的不外乎也是昵称「白算盘」 的 Computer Organization: https://tinyurl.com/yawxuu8z 这本书已经算不错了,建议也阅读他的进阶版本: https://tinyurl.com/y86usjqb 再来如果是结合 compiler 与进阶硬体架构的书,就不得不推 "The Blue Book": https://tinyurl.com/y924fkmo 这本书我个人是视为圣经 因为虽然里面只focus在各种层级的平行化问题 但第一,平行化就算过几十年还是一个难解的问题XDD。第二,该书前三章提出的 dependency analysis 後来变成编译器开发最重要的基石之一。可以用在非常广泛的 问题上 除此之外虽然他是在本世纪初出版 但里面非常多针对特定硬体功能的优化 现在 (意外地)依然可以用 目前就想到这些 如有其他建议欢迎来补充! --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 169.234.228.195 (美国)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/CompilerDev/M.1592370461.A.B56.html ※ 编辑: mshockwave (169.234.228.195 美国), 06/17/2020 13:08:15
1F:推 b0920075: 如果想看实作玩具级编译器的书或 project 请问有没有推 06/17 15:43
2F:→ b0920075: 荐哪些是比较友好的? 06/17 15:43
3F:推 JackChung: MLIR简单好用 06/17 18:26
4F:→ Lipraxde: llvm kaleidoscope 06/17 18:48
5F:推 flypaper: 我觉得gcc难入手许多 常常想要理解某个API的用途就花很 06/18 20:50
6F:→ flypaper: 多时间 巨集重重 模组化没llvm清楚 有时候想用gdb也没方 06/18 20:52
7F:→ flypaper: 向 不过也有可能是我的慧根不够就是了 06/18 20:53
8F:推 Dracarys: 坐等原始码研读指南 06/20 14:05
9F:推 LLVMBackend: 这是小弟最近入门llvm所记录的一些心得 06/27 12:54
10F:→ LLVMBackend: https://llvmphighter.blogspot.com/ 06/27 12:55
11F:推 nevak: 这篇值得自m 06/30 06:33
12F:推 JameC: 太晚发现这个版了,好多有用的资讯,推 07/10 21:05
13F:推 argc: 感谢分享 12/06 23:38
14F:推 kkk99923: 推推 09/10 19:49
15F:推 cseslowpoke: 推 08/29 14:11







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP