LC-3
外觀
LC-3(Little Computer 3)是一種匯編語言及其指定的微處理器架構。由德克薩斯大學奧斯汀分校的 Yale Patt,和伊利諾伊大學厄巴納-香檳分校的 Sanjay J. Patel 開發。它具有相對簡單的指令集,可用於編寫中等複雜的匯編程序,並且是C編譯器的可行目標。該語言比 x86 簡單,但具有許多與更複雜語言相似的功能。這些特性使其適合初級教學,因此最常用於教授計算機科學學生編程和計算機體系結構的基礎知識。[1]
指令集
[編輯]LC-3 的寄存器字長為 16 位,使用一個 16 位可尋址存儲器,擁有 65536 個位置的地址空間。寄存器文件包含八個寄存器,編號為R0至R7。所有寄存器都是通用的,任何能寫入寄存器文件的指令都可以自由使用,但在某些情境下(例如從C代碼轉換到LC-3匯編)中,有些寄存器被用於特殊用途。
指令寬度為16位,操作碼為4位。指令集為十六種可能的操作碼中的十五條定義了指令。該架構支持使用鍵盤和顯示器來調節輸入和輸出;這種支持通過內存映射的輸入輸出抽象(I/O)來實現。操作系統提供讀取和回放鍵盤字符、將單個字符打印到顯示器、打印整串字符串(打包和解壓形式)以及停止機器的功能。
LC-3中的所有數據都是有符號整數(補碼形式儲存)。I/O設備運行ASCII字符。LC-3 不支持浮點數。
LC-3實現了十五種指令類型,第十六種操作碼保留以供後續使用。該架構採取載入-儲存架構,內存中的值必須先存入寄存器文件,才能作操作它們。
LC-3 的運算指令包括有符號加法,按位與和按位非。尋址模式有PC相對尋址,間接尋址和寄存器尋址,支持無條件跳轉,條件分支和子程序調用。
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
| ADD | 0001 | DR | SR1 | 0 | 00 | SR2 | ||||||||||
| ADD | 0001 | DR | SR1 | 1 | Imm5 | |||||||||||
| AND | 0101 | DR | SR1 | 0 | 00 | SR2 | ||||||||||
| AND | 0101 | DR | SR1 | 1 | Imm5 | |||||||||||
| BR | 0000 | n | z | p | PCoffset9 | |||||||||||
| JMP | 1100 | 000 | BaseR | 000000 | ||||||||||||
| JSR | 0100 | 1 | PCoffset11 | |||||||||||||
| JSRR | 0100 | 0 | 00 | BaseR | 000000 | |||||||||||
| LD | 0010 | DR | PCoffset9 | |||||||||||||
| LDI | 1010 | DR | PCoffset9 | |||||||||||||
| LDR | 0110 | DR | BaseR | offset6 | ||||||||||||
| LEA | 1110 | DR | PCoffset9 | |||||||||||||
| NOT | 1001 | DR | SR | 111111 | ||||||||||||
| RET | 1100 | 000 | 111 | 000000 | ||||||||||||
| ST | 0011 | SR | PCoffset9 | |||||||||||||
| STI | 1011 | SR | PCoffset9 | |||||||||||||
| STR | 0111 | SR | BaseR | offset6 | ||||||||||||
| TRAP | 1111 | 0000 | trapvect8 | |||||||||||||
| reserved | 1101 | |||||||||||||||
LC-3b
[編輯]LC-3b 是LC-3的改進版本,包含以下變化:[3]
- 機器的字長保持為16位,但內存現在可以用相同的地址空間進行字節尋址。
- LD和ST指令(使用PC相對尋址加載和存儲數據)已被移除。
- LDI和STI指令(間接尋址加載和存儲)使用基於寄存器的尋址,而非PC相對尋址。
- 新增了兩條指令,LDB和STB,用於操作單個內存字節。
- 保留的操作碼已被轉換為一個移位指令SHF,支持任意大小的雙向算術和邏輯移位。
參考資料
[編輯]- ^ Patt, Yale N.; Patel, Sanjay. Introduction to Computing Systems: From Bits and Gates to C and Beyond. New York, NY: McGraw-Hill Higher Education. 2003 [6 October 2010]. ISBN 0-07-246750-9. (原始內容存檔於2014-06-08).
- ^ Patel, Sanjay; Patt, Yale N. Introduction to Computing Systems: From Bits & Gates to C/C++ & Beyond 3rd. McGraw Hill. Aug 15, 2019: 656. ISBN 978-1-260-15053-7 (英語).
- ^ Tale Patt. The Microarchitecture of the LC-3b, Basic Machine (PDF). [2026-02-14]. (原始內容存檔 (PDF)於2025-08-15).