軟體界經歷幾十年的發展,已經沉澱下數以億計的程式碼,然而這些程式碼盤根錯節,彼此之間互相緊密依賴。舉例來說,寫一個網站,必須跑在瀏覽器上,瀏覽器又跑在作業系統之上,主流作業系統又都是由 C/C++ 編譯器編譯出來,依賴可以追溯很多很多層。(甚至會成環,例如編譯器通常也需要作業系統作為執行環境。)
將現代軟體當做一個世界,從學會寫程式的第一天開始,絕大多數的人就永遠也脫離不了它。本作企圖指引人們如何離開原世界(下稱塵界),再造一個新世界,故名:離塵指引。
而離塵的第一步,是自舉一門自定義的程式語言。
在上一章討論了區域變數如何存放在棧中,在零.一版中提及了全域變數如何生成。現在,還剩下一種變數沒有討論——參數。 精五真言施術約定 精五有 32 個通用暫存器,...
本章將結合實際程式碼來一觀術是如何被編譯的。 計算棧的大小 究竟要分配多大的棧空間給一個術呢? 術.甲(子、丑)【 元.天=1 元.地=1...
最後只剩下若語句還無法編譯了!在討論若語句之前,先來看看零.二版加入的運算子會如何編譯。 比較運算(及餘運算) 精五僅提供 slt (及其立即數版本 slit)...
有了遞迴與決策能力,音界咒已經能計算不少東西了。試寫了幾個有代表性又常見的術。 輾轉相除法 術.輾轉相除(甲、乙)【 若(乙==0)【...
參考的資料比我想像中的還少,大概是多年前在大學學過的編譯器功底仍在,這幾年對指令集啊鏈結啊這些系統底層的東西也有比大學的時候熟悉一點,很多東西知道大方向之後細節...