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彙編指令編譯為機器碼(可單獨調用)
-
-
c++實現的模擬器類:
-
simulator.h
simulator.cpp
-
-
Qt窗口類:
-
mainwindow.h
mainwindow.cpp
-
highlighter.h
highlighter.cpp 代碼高亮類
- main.h (作為程序入口文件)
-