開發與維運

基於Qt實現的帶圖形界面的MIPS彙編指令的編輯器、彙編器、反彙編器、模擬器

MIPS-sc

MIPS-sc 為 MIPS simulator&compiler 的簡稱,是一個基於Qt實現的帶圖形界面的MIPS彙編指令的編輯器、彙編器、反彙編器、模擬器。是為浙江大學《計算機組成課程》編寫的的課程項目之一。

作者:鄭昱笙

預覽

  • 模擬器界面:

左側為32位內存內容、可以以ascii碼方式或反彙編指令方式查看;

右側為寄存器、syscall輸入輸出窗口,可通過按鈕查看相應寄存器與內存的值、修改PC值、對應內存單元值;

image

  • 文件菜單:

新建、打開、保存代碼文件;

支持 .asm 彙編文件彙編為 .bin 文件並導出;

支持 .bin 文件反彙編為 .asm 文件,支持導入加載 .bin 文件並執行:

image

  • 編輯器/編譯界面

上方為代碼編輯器,下方為編譯輸出結果,對相應錯誤有錯誤詳細信息以及行號提示

image

特性

  • 支持語法高亮;
  • 支持部分偽指令;
  • 支持 .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 (作為程序入口文件)

Leave a Reply

Your email address will not be published. Required fields are marked *