BCC16VM 教材:機器碼結構

BCC16VM 應該屬於 RISC 設計:它的機器碼都一樣長,都是一個字元、八嗶。 參照 BCC16VM 線上教材首頁的指令簡表, 我們看到每個機器碼都分成兩段:指令碼,佔前 4 bits,和參數碼,佔後 4 bits。

我們用高階語言 (例如 C) 寫的程式,就是被編譯器改編成機器碼, 儲存在硬碟裡面。當我們要執行程式的時候, 那些指令碼就被作業系統讀出來放在記憶體的指令段。 而當作業系統將 PC 設定為你的程式裡第一個機器碼的位址, CPU 在下一步就開始執行你的程式了。

指令碼一共 16 個,編號 0..15。 但其中指令碼是 0 的那個,有 13 種參數,通稱為 interrupts (中斷)。 基本上,0 指令碼就是輸出訊息到 console 的動作。

凡是簡表中寫 Ra 或者 Rb 者,都代表暫存器。 00 代表 R0,01 代表 R1,10 代表 R2。 BCC16VM 只接受二進制數字,所以您不能真的輸入 Ra 或者 R0。

凡是簡表中寫 N 就代表 0..15 之常數, 也就是二進制 00001111 之間的整數。 BCC16VM 只接受二進制數字,所以您不能直接的輸入 3 或者 11 (十一)。

在簡表當中,generate 指令產生一個 0..15 的常數放在 R0, 如果要產生更大的常數,就必須從 0..15 之間的一個數去做計算才行。 goto 指令指定一個指令段的位址,而 load 和 store 指令都指定一個資料段的位址, 因為那些位址都在 0 與 15 之間,所以 N 足敷使用。

此後,當我們寫指令段位址的時候,都用粗黑體,例如 0010; 當我們寫資料段位址的時候,都用加底線的黑體,例如 0010。 當我們寫記憶體的二進制內容的時候,都用鉛字體,例如 11010000。 雖然位址只有 4-bit,但是要寫進一個記憶體的時候,一律要在左邊補 0000。 如果不用二進制,我們都用十進制數字表示,那就用普通字型。

習題

[BCC16-B]
單維彰 (2004/06/09) ---
[Prev] [Next] [Up]