天天看點

基于Qt實作的帶圖形界面的MIPS彙編指令的編輯器、彙編器、反彙編器、模拟器MIPS-sc

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語言庫可複用

  1. C語言實作的将MIPS彙編指令轉換為機器碼,或進行反彙編
    • 公共頭檔案compiler.h:
      compile.c 實作了将輸入的源代碼檔案轉換為二進制數組;
      
      decompiler.c 将一條機器碼反彙編為MIPS彙編指令
      
      singleCompiler.c 将一條MIPS彙編指令編譯為機器碼(可單獨調用)
                 
  2. c++實作的模拟器類:
    • simulator.h
      simulator.cpp
                 
  3. Qt視窗類:
    • mainwindow.h
      mainwindow.cpp
                 
    • highlighter.h
      highlighter.cpp 代碼高亮類
                 
    • main.h (作為程式入口檔案)

繼續閱讀