[爆卦]flex bison教學是什麼?優點缺點精華區懶人包

為什麼這篇flex bison教學鄉民發文收入到精華區:因為在flex bison教學這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者descent (「雄辯是銀,沉默是金」)看板C_and_CPP標題Re: [問題] 實作編譯器...


推薦這本書 - 自己动手写编译器、链接器

為了學習 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://www.ptt.cc/bbs/C_and_CPP/M.1447481205.A.B25.html
mikukonn: 謝謝你的推薦,我會去看看的>w< 11/14 14:43
damody: 喔喔喔 感覺超讚的 11/14 15:48
ronin728: 過來推原PO的,之前找x86編碼資料,文章好讀 11/14 19:49
noodleT: 借問個問題:要用cpp做出類似組合語言那樣簡易的編譯器有 11/14 22:46
noodleT: 沒有推薦的參考資料? 11/14 22:47
noodleT: 我想把一些控制OpenGL圖形「座標」的指令寫在外部的txt檔 11/14 22:47
final01: 好像不能下載吧?? 11/15 20:39
Bencrie: 懶的話就 flex bison 兜一兜吧 XD 11/17 12:59

你可能也想看看

搜尋相關網站