第二十四章 改造完成(1 / 1)

在這個時間點索任兩家還沒成為競爭對手,甚至還能算是親密夥伴。   此時的索妮還沒有自己的主機平臺,於是在90年的時候開始和任地獄合作製作CD-ROM(光盤)遊戲機。   不過在91年的時候,任地獄想吃Sony下手裡CD-ROM的技術不成,於是單方麵秘密取消了跟索尼的合作,轉而跟飛利浦合作搞CD-ROM遊戲機了,索妮還蒙在鼓裡。   從此兩家關係開始惡化,直到1994年索妮推出遊戲機,兩家正式開始進入競爭對手關係,大搞獨占打擊對手。   所以此時會有索妮的遊戲上老任的平臺也不算離譜。   果然他沒聽說過這款遊戲是有原因的,玩了一會之後發現確實沒啥玩頭。   “謝了。”   將手柄交還給森本佑樹準備去吃飯。   “不客氣,對了栗山桑,不知道能不能略微給我解釋一下C語言編譯器的構造原理?”   “你很想了解嗎?”   “我也有學習過C,開發的方便程度和直接寫匯編比起來簡直是天差地別,但是底層原理卻一直搞不明白。   我對栗山桑十分敬佩,居然能夠實現如此復雜的編程。十分希望能向您學習。”   森本佑樹十分恭敬地說道。   這個時代程序員想要學習深層次的知識,除了出版物之外就是向高手請教。   “也不是不行。反正我把大概原理告訴你,其他的你想繼續深入了解隻能自己去看材料了。”   “這樣就足夠了。”森本佑樹十分感激。   很多時候學習的門檻並不是知識有多高深,而在於如何收集和歸納。   即便計算機行業隻發展了幾十年,但有關的文獻刊物已經是浩瀚如海,如果沒有人給你引進門,你查資料都不知道從何查起。   很多人並不是不努力,他們像是無頭蒼蠅一樣撞進知識的海洋中奮力遨遊,然後就被淹死了。   樹穀給他將大概原理說清楚,能讓他事半功倍。   “一個簡單的不帶優化的編譯器,基本隻需要3個步驟:語法分析,代碼生成,連接裝載……要具體了解的話,你可以自己看看《龍書》。”   龍書就是名為《編譯原理》的程序員聖經,因為封麵是一名騎士和一隻龍所以被稱為龍書。如果說離散數學是計算機科學大廈的基石,編譯原理則是這座大廈的天花板。   和《X語言從入門到精通》那種連大學教材都不如的水書完全不是一個等級的。   看森本佑樹記筆記記得認真,樹穀索性又講了些更深入的東西,先把搞暈,讓他自己去消化知識去,別天天在他身後盯著。   實現C編譯器難點主要有三個,語法分析器、代碼生成器、連接器。   語法分析器就是將C代碼翻譯為“抽象語法樹(AST)”。代碼生成器就是將抽象語法樹翻譯為可執行代碼。連接器是將不同源代碼文件組合到一起,寫入目標係統進行運行。   三者中最難的是語法分析器,而幸運的是樹穀並不需要改動這部分,他的改造主要集中在代碼生成器上,讓其以GB平臺的匯編為目標生成代碼。   而連接和裝載的步驟直接被舍棄,這一步還是得人工來。   等他實現了這個程序,GF社進行開發的時候就可以寫更加易於開發的C語言,然後通過程序轉化成GB匯編格式,最後再手動進行修整,就能在GB上運行。   流程大概就和用AI大模型生成文稿一樣,輸入梗概生成一篇文案,最後手動修改將不通順的部分改成人話。   即便還是不能完全自動,比起之前已經是效率大增了。   樹穀花了十幾分鐘打發了森本佑樹,吃過午飯後繼續工作。   之後的幾天也沒有什麼特別的事情發生,森本佑樹也完全沒有來煩他,除了工作時間外他都抱著一本《編譯原理》啃得不亦樂乎。   這幾天樹穀全身心投入到編譯器的改造中,閑暇時也和同事們聊聊天。   不知道是不是真的有賽博佛祖的保佑,GF社的遊戲測試相當順利,所以全公司都享受著996的福報,晚上九點就能準時下班。   甚至還有些開發組成員邀請樹穀下班後去居酒屋坐坐,假裝加班等到十一點再回家,省的太早回去撞見太太和別的男人在一起,那多尷尬啊!   而樹穀的小軟件改造比預想的還要快速。   得益於田尻赤和增田順二找到的這份TurboC 2.0編譯器,源代碼和他記憶中的就隻有幾處細微的不同。   他隻費了點心思將不同之處處理掉,也沒有造成大的困難。先前還預計七天就能完成,沒想到在周六早上就已經全部完成了。   “什麼?已經完成了?”   田尻赤有些不敢置信,雙目圓瞪抓著樹穀的雙肩使勁晃了晃。   原本他還覺得在GF社目前這個遊戲項目徹底結束之前,樹穀能夠完成就已經很好了,畢竟編譯器多復雜稍微懂行些的都知道,更別提要動手去改造了。   樹穀感覺自己腦袋都快被搖散黃了,連忙抓住他的手:“田尻前輩我要個GB的測試機,試試生成的代碼能不能運行。”   “等等,我親自去拿。”   田尻赤聞言放開了樹穀,打開庫房從中取出一堆電路板和數據線。找書苑 www.zhaoshuyuan.com   庫房是除了社長室外,GF社辦公場地中唯一的房間,裡麵存放了大量電子設備。   畢竟是遊戲開發商,即使隻是做外包GF社還是有不少遊戲主機平臺的測試機器。   隻不過辦公室狹小,大量設備堆在工位上既不方便也容易損壞,所以平常都是統一收在庫房中,做相應平臺的項目時再統一配置。   田尻赤親自拿著測試機來到樹穀的電腦前幫他接好,然後緊緊盯著屏幕。   在他的注視下,樹穀打開文本編輯器用C語言寫出一段控製GB貼圖切換的代碼,然後用腳本進行編譯,生成了一段匯編代碼。   原來隻有五十幾行的C語言代碼,在編譯後變成了近千行編譯指令。   田尻赤高興地大聲喊道:“真的成了!”   “成功了嗎?”   增田順二和衫森康也走進社長室內,他們剛才看到田尻赤拿著GB測試機就猜測是樹穀的代碼成了。   “真是不可思議!讓我來看看。”   增田順二湊到樹穀邊上,他控製著光標一行一行地移動,仔細查看著腳本生成的每一句匯編,   “是GB的匯編,而且最重要的內存和寄存器尋址也沒有問題!”   作為開發部長的增田順二對GB的底層再熟悉不過了,他很快確定了這段代碼沒有明顯的錯漏。   然後他動手將代碼燒錄進ROM中,在測試機上測試。   “測試跑過了,代碼沒問題。”   增田順二轉頭和田尻赤、衫森康互相對視,三人目光中都帶有喜悅。