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

MIPS-sc

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

源代碼已放置在github中:
https://github.com/yunwei37/MIPS-sc-zju

預覽

  • 模擬器界面:

左側爲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 (作爲程序入口文件)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章