作者descent (「雄辩是银,沉默是金」)
看板C_and_CPP
标题Re: [问题] 实作编译器
时间Sat Nov 14 14:06:40 2015
推荐这本书 - 自己动手写编译器、链接器
为了学习 compiler 技术, 我曾经买过很多书籍 (fig 2), 不过一样成效不彰, 我自己比
较想要写出类似 c 语言的 compiler, 而不是那些教学用的什麽简易版的 pascal, 或是
为了教学而设计的语言, 完全不能和现实生活接上轨道。
本书的作者和我有相同的想法, 因此对 c 做了一些缩减, 就是针对这个缩减版的 c 来写
compiler, 所以称做 simple c compiler。这样就够了吗? 当然不够, 还有 linker 要
写, 我买的这些书中有些把这个难题交给了 nasm, 只处理到组合语言这部份, 不是不行
, 只是这样就没有完整的学习到, 神功只练了一半, 岂不可惜, 你不想怎麽搞定那些
machine code 吗? 不管是 arm 还是 x86, machine code 这些充满魔法般的东西, 我想
搞懂他们, 当然还有执行档格式, elf 或是 pe, 这些都要一起学起来, 就是要一条鞭的
学习, 才不会遗漏了某块技术拼图。
官网 (书中程式码下载点):
http://goo.gl/9mti5V (
http://www.tup.tsinghua.edu.cn/booksCenter/book_05928401.html ), 本书的程式是
用 c 开发, 以 vc6 为开发环境, 而造出来的执行档也是以 coff/pe windows 平台为主
, 对习惯 linux 的我来说, 有些遗憾, 不过不要紧, 人家已经开好路, 柏油我就自己铺
上吧!
目前把一部份程式移植到 linux, 我使用了 ncurses 来作终端机颜色处理。有个麻烦点
就是 getch(), 因为 ncurses 也有一个 getch(), 所以我把 getch() 改为 fgetch(),
因为范例程式码的 getch() 其实就是去抓档案的一个 char。
这本书文字解释的不够多, 需要自己从 souce code 研读, 我目前没有时间继续读下去,
估计要 3 个月以上才能理解这本书, 推荐给你。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 180.217.218.96
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1447481205.A.B25.html
1F:推 mikukonn: 谢谢你的推荐,我会去看看的>w< 11/14 14:43
2F:推 damody: 喔喔喔 感觉超赞的 11/14 15:48
3F:推 ronin728: 过来推原PO的,之前找x86编码资料,文章好读 11/14 19:49
4F:推 noodleT: 借问个问题:要用cpp做出类似组合语言那样简易的编译器有 11/14 22:46
5F:→ noodleT: 没有推荐的参考资料? 11/14 22:47
6F:→ noodleT: 我想把一些控制OpenGL图形「座标」的指令写在外部的txt档 11/14 22:47
7F:→ final01: 好像不能下载吧?? 11/15 20:39
8F:推 Bencrie: 懒的话就 flex bison 兜一兜吧 XD 11/17 12:59