43、P1 W6 U6.6A 作業(yè)6 編程實現(xiàn)

視頻:
如果本次課程對應(yīng)的 Coursera 的視頻打不開权薯,可以點擊下面鏈接
P1W6U6.6A -Project-6-Overview Programming

軟件:
全課程所需軟件項目包官方下載:
https://www.nand2tetris.org/software
備了一份軟件項目包放在CSDN了,版本2.6支持Mac、Linux蕉汪、Windows:
https://download.csdn.net/download/shazizm/11268147

U6.6A 是用編程方式來實現(xiàn) 匯編器流译,這節(jié)課老師會講解很多實際編程時的問題,以及提供的工具和測試文件肤无。

如果對編程一點不了解先蒋,那么U6.6B就是講解如何“人肉”充當(dāng)編譯器,來告訴我們?nèi)绾稳斯しg匯編語言宛渐。

不過即使如此竞漾,還是建議聽聽U6.6A。另外如果計劃繼續(xù)開展part2軟件部分的學(xué)習(xí)窥翩,自己寫一個匯編器還是蠻有用的业岁,貌似之后的學(xué)習(xí)中,程序會很長寇蚊,人工實在是不太可能完成笔时,且容易出錯。

Hack Assembler

課程給Hack的匯編器起的名字就叫 HackAssembler

它能把一個后綴是 .asm 的匯編程序文件仗岸,翻譯后允耿,輸出一個后綴是 .hack 的二進制內(nèi)容的文件。

另外編譯器不會去檢查匯編程序語法是否正確扒怖,默認假設(shè)接收的 xxx.asm 都是沒有語法錯誤的 较锡,所以我們寫匯編程序時不要寫錯。

假如你的匯編器是用java寫成的盗痒。那么運行程序的樣子就是下圖prompt后面的樣子蚂蕴。

在一個命名行(終端)里輸入:
java HackAssember Xxx.asm

這里應(yīng)該補充不同系統(tǒng)如何調(diào)出終端,以及簡單介紹的外鏈接

建議的軟件模塊

軟件架構(gòu)在上節(jié)課里已經(jīng)講過俯邓。這里明確給出了建議的模塊名稱骡楼。

比如我就假設(shè) Parser 和 Code 是java里兩個類,SymbolTable可以是一個java里的鍵值表稽鞭,最后Main主程序來組織整個翻譯流程鸟整。

Parser

Code

SymbolTable

Main

只是建議,利用上節(jié)課的邏輯朦蕴,你可以用任何語言去完成

建議的實施步驟

老師建議化繁為簡吃嘿,可以分兩塊一步一步來。

比如第一步先做一個能翻譯 無符號的匯編程序 的匯編器梦重。

第二步在單獨做一個處理 符號的程序兑燥。

最后把兩部分融合起來。

還提供了兩套測試用的匯編程序琴拧。帶L的就是無符號的匯編程序

接下來挑幾個分別講講

測試文件在 本文最上面 下載軟件包 里有

Add.asm 測試程序

這個程序很簡單降瞳,主要是就是測試如何處理 空行 和 注釋
當(dāng)然 翻譯指令無符號指令也是最基本的。

行內(nèi)注釋 如何搞?

Max.asm 挣饥、Rectangle.asm測試程序

Max.asm 這是一個比兩個數(shù)大小的匯編程序除师,當(dāng)然匯編器并不關(guān)心這個。它只是根據(jù)語法逐行翻譯就是了扔枫。

Rectangle.asm 是一個畫方框的程序汛聚。

同樣都分別提供了 有符號 和 無符號兩種版本。

Pong.asm 測試程序短荐。

Pong 是一個小游戲倚舀。一個彈來彈去的球,玩家控制一個板不讓它掉下去忍宋。

老師用CPU Emulator仿真器痕貌,加載了Pong.asm,然后運行了程序糠排,演示這個小游戲舵稠。

這個就是一個大點的程序了,如下圖入宦,但這個游戲的邏輯如果用高級語言寫哺徊,大概就是200多行。有這么多行匯編指令乾闰,這里實際上不光有Pong游戲的邏輯落追,還有一個小型的操作系統(tǒng),來控制屏幕汹忠、鍵盤淋硝、計算等雹熬。

這個Pong.asm 是part2部分的老師發(fā)明的Jack高級語言通過老師發(fā)明的 JackCompiler編譯器宽菜,編譯出來的,總之這都是part2的東西了竿报,也都是part2中我們要去自己實現(xiàn)的東西铅乡,期待。

還好烈菌,在這里我們只是拿來Pong.asm測試我們的匯編器阵幸,不用關(guān)心它怎么來的。芽世。挚赊。

演示視頻從 12:55 到 21:50


Pong程序的匯編指令,有2萬7千多個

老師沒忍住济瓢,還是提了一下這個小游戲的背后荠割,是我們part2要學(xué)習(xí)并實現(xiàn)的

Jack 類似java的面向?qū)ο蟮母呒壵Z言
Jack編譯器
JackOS 操作系統(tǒng)

因為Jack編譯器編譯出來的匯編語言。所以自然沒有 空行 和 過多的注釋。

之所以叫Jack我估計是取 java 和 hack 的合體蔑鹦。

驗證測試結(jié)果

老師在軟件包里夺克,提供了三種工具,可以對比驗證我們的結(jié)果嚎朽。

把匯編器翻譯后的 xxx.hack 文件加載到下面任意工具中铺纽,進行結(jié)果驗證

Hardware simulator
CPU Emulator
Assembler

例如下圖 Assembler 使用示意圖

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末惹想,一起剝皮案震驚了整個濱河市缓呛,隨后出現(xiàn)的幾起案子打毛,更是在濱河造成了極大的恐慌悠汽,老刑警劉巖薄湿,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件履植,死亡現(xiàn)場離奇詭異炬灭,居然都是意外死亡指煎,警方通過查閱死者的電腦和手機粗蔚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門尝偎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鹏控,你說我怎么就攤上這事致扯。” “怎么了当辐?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵抖僵,是天一觀的道長。 經(jīng)常有香客問我缘揪,道長耍群,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任找筝,我火速辦了婚禮蹈垢,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘袖裕。我一直安慰自己曹抬,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布急鳄。 她就那樣靜靜地躺著谤民,像睡著了一般。 火紅的嫁衣襯著肌膚如雪疾宏。 梳的紋絲不亂的頭發(fā)上张足,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機與錄音坎藐,去河邊找鬼为牍。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的吵聪。 我是一名探鬼主播凌那,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼吟逝!你這毒婦竟也來了帽蝶?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤块攒,失蹤者是張志新(化名)和其女友劉穎励稳,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體囱井,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡驹尼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了庞呕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片新翎。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖住练,靈堂內(nèi)的尸體忽然破棺而出地啰,到底是詐尸還是另有隱情,我是刑警寧澤讲逛,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布亏吝,位于F島的核電站,受9級特大地震影響盏混,放射性物質(zhì)發(fā)生泄漏蔚鸥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一许赃、第九天 我趴在偏房一處隱蔽的房頂上張望止喷。 院中可真熱鬧,春花似錦图焰、人聲如沸启盛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至卧抗,卻和暖如春藤滥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背社裆。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工拙绊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓标沪,卻偏偏與公主長得像榄攀,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子金句,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容