Programming 板


※ 引述《[email protected] (渴望平凡的幸福)》之铭言: > AFAIK gcc 4.1.1 还在用 flex (lex clone) / bison (yacc clone). > 平常编译的时候不用准备, 是因为它先产生一份丢在 distribution 里面了. 不,事实上我早就猜到会有人拿 GCC 反驳, 不过我没想到是拿 4.x 来反驳 XD GCC 在 4.0 已经改用纯手工的 recursive descent C++ parser 了, 而 4.1 连 C parser 也改用 recursive descent parser, 并不是什麽先拿 flex/bison 重新产生一份, 好歹我硕士班时代两年里每天都在跟 GCC 的 source code 打仗, 不可能连这个都会搞错。 > == > 嗯,所以 GCC 不是工业强度等级的软体,纯粹就只是一个教学用具而已,对吧? XD 是的, GCC 即使到 4.3, 依然不是一个工业强度等级的软体, 它是一个原始码高达 70 多万行的大型软体, 但它使用难以维护和 team work 的 C 撰写, maintain 其主干 source code 的人也多以网路形式交流, 对各 platform 的 backend 支援也大都是由外人撰写, 其稳定度一直以来都是相当堪虑。 上面的理由可能很难说服某些人, 所以也能换一种说法; GCC 目前已经面临到一个很大的瓶颈, 也就是对 VLIW architecture 的贫弱支援能力, instruction scheduler 跟 register allocator 紧密相关, 但它的 register allocator 是 legacy code, 几乎打从 GCC 有这份 code 以来它就几乎没有什麽人再动过, 但是自从引进 Tree-SSA 之後 register pressure 增加, 这个 register allocator 的极限早已被探勘出来, 曾经有人尝试去把它换成 graph coloring register allocator, 但最後宣告失败, 其因就在於主干原始码缺乏规划所造成, 目前 register allocator 在 GCC 内部已经是相当有名的恶性肿瘤。 对於 non-regular register file 的 VLIW 或 DSP 架构来说, 这个 register allocator 更是几乎跟垃圾一样了。 如果上述说法太过深奥, 还有简单一点的说法, 而且是针对 flex & bison 的: 当初 4.0 之所以把 C++ parser 整个拿纯 C 手工重写, 有一大原因就是 flex & bison 生出来的 code 太难 debug 了, 而 C++ 的 syntax 又是极其复杂 (对 compiler 而言), 要加什麽东西都非常困难, 导致一堆 parser 上的 bug 一直到 4.x 才被修正, 这其中还包含了各种跟 template 相关的有名 bug。 > 我想应该不能这样解读才是 ...... > 这边写个小小的 parser, 光是「有用辅助工具」的时候, 就都快搞到头脑爆浆了 > 如果从头到尾都不善用这些辅助工具的话 > 完成的时间想必拖得更久, 所谓的「效率」、「强度」又真的会有多少优势? > 小弟作品: http://sbt.idv.tw/tBoard/index.py?f=25&t=732&m=pl > 嗯 ... 好吧, 它的确需要 ... > Toy Parser Generator. XD http://christophe.delord.free.fr/tpg/ 你可能搞错我的意思了, 工具会随着时代演进, 事实上我并不鼓励大家学 GCC 4.x 一样用纯手工重写 parser, 我们有更好的选择: boost spirit library (http://www.boost.org/libs/spirit/index.html) 撰写 parser 的过程变得更加轻松愉快, 而且真的出了 bug 时找起来也没有这麽痛苦, 我并没有说用工具不好, 而是工具应该随着时代而变换, 现在各种软体的规模早已今非昔比, compiler 也不例外, 而害得大家都只会这麽老旧的工具的元凶, 其实正是 compiler 圣经本的作者。 compiler 这种东西跟一般商用产品不一样, 它是软体界里常被人忽略的「工业用软体系统」, 它的强度如果没办法符合工业等级的要求, programmer 就会疑惑, 试想你写个 C/C++ 程式, 执行时发生问题的话, 你几乎只要考虑是不是因为自己写错, 而不是去考虑 compiler 有没有 bug, 当你「需要」去考虑到 compiler 有没有 bug 时, 你的处境会变得多麽艰辛是可想而知的; 许多人都在 x86 上写程式, 所以不知道 compiler 没有一定的强度会遇上什麽事情, 你在新的平台上开发 application, 你写程式的执行结果错误, 你要怀疑: 1. 自己程式写错 2. compiler 写错 (或 assembler、linker、loader 等等系统工具写错) 3. 硬体设计错误 (或是 simulator 写错) 这种要命的状况, 仍三不五时的出现在开发 CPU 的厂商以及与其合作的团队中, 这就是因为大家选用了强度很弱的 compiler source code 进行移植造成的, 最恐怖的还不只是软体方面的问题, 而是人的问题, 如果你坚信你自己没写错程式, 而跑去跟写 compiler 或 simulator (硬体设计者也一样) 的人反应, 你在台湾的环境里得到的回答很可能是: 写 compiler 的:(1) 一定是你写错啦,把你的 code 拿来给我看。 (2) 你的程式好像没错,应该是 simulator 写错了 写 simulator 的:(1) 一定是你写错了。 (2) 不然就是 compiler 写错了。 很抱歉, 你会四处求助无门, 那你怎麽办? 当然是只好自己一行一行追罗, 尽你所能的去看 compiler 生出来的 assembly code 有没有错, 用尽你手边可能使用的 debug 工具看 simulator 在几亿个 cycle 里, 到底是哪个 cycle 出错了, 写 compiler 跟 simulator 的人不会帮你干这件事有一个好理由: 我又不晓得你们 application 内的设计和构造 (意思就是你自己找 bug 比较快)。 也许你以为去追 compiler 用 -O2 或 -O3 生出来的 asm code 很简单, 但事实并非如此, 如果你稍微了解 pipeline 架构和 hazards 的问题, 你就会知道 instruction scheduling 会把指令重排, 2 行 C code 生出来的 10 行 assembly code 可能互相混在一起, 可能还有一两行 assembly code 飞到很远的地方去, 才 2 行 C code 就这样了, 100 行的 C code 你怎麽办? (你可能以为我离题了,不过我这些话是在强调「强度」的重要性) 你可能会质疑怎麽 hardware (simulator)、compiler、application 会并行开发, 很遗憾的这就是现在商人的想法和作风, 你不管到哪国去看都是这样在搞, 一般都是连 hardware 都没有的状况下, compiler 和 application 就要在只有 simulator 的情况下写出来了, 等到 hardware 的实体一做出来就几乎是要直接拿去卖, 现实就是这样。 -- Name: Tseng, Ling-hua E-mail Address: [email protected] School: National Tsing Hua University Department: Computer Science Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design Researching: Software pipelining for VLIW architectures Homepage: https://it.muds.net/~uranus -- ╔═══╗ ┼────────────────────────╮ 狂狷 Origin:[ 狂 狷 年 少 ] whshs.cs.nccu.edu.tw ╰─╮ 年少 ┼╮ < IP:140.119.164.252 > ╰─╮ ╚╦═╦╝ From:61-230-229-51.dynamic.hinet.net ─╨─╨─ KGBBS 遨翔"BBS"的狂狷不驯;属於年少的轻狂色彩 [修改]tinlans:61-230-229-51.dynamic.hinet.net 07/04/17 7:39:30
1F:推 horngsh:感谢tinlans大大精辟的解说.... 59.126.181.10 04/17 15:18
2F:推 kornelius: 61.223.98.181 04/17 18:15
3F:推 yago01:tinlans 大大的文章真是精彩 140.125.32.163 04/18 10:43
4F:推 yzugsr:精辟 推 140.114.88.16 04/18 11:19
5F:推 virdust2003:push140.113.216.147 04/18 12:31
6F:推 Dungeon:推!220.141.249.204 04/18 23:17
7F:推 Arton0306:推! 123.195.22.165 04/29 16:00
8F:推 twisters121:有读书真的有差 61.70.53.157 05/01 16:30







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灯, 水草
伺服器连线错误,造成您的不便还请多多包涵!
「赞助商连结」






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灯, 水草

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

TOP