MIPS-sc
MIPS-sc 為 MIPS simulator&compiler 的簡稱,是一個基于Qt實作的帶圖形界面的MIPS彙編指令的編輯器、彙編器、反彙編器、模拟器。是為浙江大學《計算機組成課程》編寫的的課程項目之一。
作者:鄭昱笙
預覽
- 模拟器界面:
左側為32位記憶體内容、可以以ascii碼方式或反彙編指令方式檢視;
右側為寄存器、syscall輸入輸出視窗,可通過按鈕檢視相應寄存器與記憶體的值、修改PC值、對應記憶體單元值;
- 檔案菜單:
建立、打開、儲存代碼檔案;
支援 .asm 彙編檔案彙編為 .bin 檔案并導出;
支援 .bin 檔案反彙編為 .asm 檔案,支援導入加載 .bin 檔案并執行:
- 編輯器/編譯界面
上方為代碼編輯器,下方為編譯輸出結果,對相應錯誤有錯誤詳細資訊以及行号提示
特性
- 支援文法高亮;
- 支援部分僞指令;
- 支援 .asm 彙編檔案彙編為 .bin 檔案;
- 支援 .bin 檔案反彙編為 .asm 檔案,支援加載 .bin 檔案并執行:
- 支援模拟運作機器碼,支援模拟終端輸入輸出
- 支援簡單的調試功能:單步運作、連續運作、設定斷點、檢視寄存器與記憶體的值、修改PC值、對應記憶體單元值
指令集
參考《ZPC之MIPS指令集2019》
-
R指令:
add slt sltu and or xor nor sllv srlv srav mul mfhi mflo
mtlo subu
-
I指令:
slti sltiu addi addiu andi ori xori sub sw sh lw lh lhu bne beq bgez bgtz blez bltz lb lhu lui
-
J指令:
j jal
- syscall功能
模拟
MIPS-sim 具有簡單的模拟與調試功能。可以通過 syscall 指令向終端輸出資訊,或從終端讀入使用者輸入資訊。在編輯器輸入代碼後可以使用 ”simulate“ 按鍵進行編譯和将機器碼加載到記憶體,可以通過step按鍵單步執行記憶體中的指令、或設定斷點進行連續執行,代碼将會執行至斷點處停止。
項目
- project:Qt項目源代碼檔案
- test:測試用例
- document:文檔
運作時需要将code.txt代碼配置文檔放在程式運作目錄
源代碼
由三個部分組成,其中模拟器類和彙編、反彙編c語言庫可複用
- C語言實作的将MIPS彙編指令轉換為機器碼,或進行反彙編
- 公共頭檔案compiler.h:
compile.c 實作了将輸入的源代碼檔案轉換為二進制數組; decompiler.c 将一條機器碼反彙編為MIPS彙編指令 singleCompiler.c 将一條MIPS彙編指令編譯為機器碼(可單獨調用)
- 公共頭檔案compiler.h:
- c++實作的模拟器類:
- simulator.h
simulator.cpp
- simulator.h
- Qt視窗類:
- mainwindow.h
mainwindow.cpp
- highlighter.h
highlighter.cpp 代碼高亮類
- main.h (作為程式入口檔案)
- mainwindow.h