MIPSsim使用說明

MIPSsim下載:https://files.cnblogs.com/files/jiangxinnju/MIPSsim.zip編程

啓動模擬器

雙擊MIPSsim.exe,便可啓動該模擬器。MIPSsim是在Windows操做系統上運行的程序,它須要用.NET運行環境。若是你的機器沒有該環境,請先下載和安裝"Microsoft .NET Framework 2.0 版可再發行組件包"。spa

模擬器啓動時,自動將本身初始化爲默認狀態。所設置的默認值爲:操作系統

  • 全部通用寄存器和浮點寄存器爲全0;
  • 內存清零;
  • 流水寄存器爲全0;
  • 清空時鐘圖、斷點、統計數據;
  • 內存大小爲4096字節;
  • 載入起始地址爲0;
  • 浮點加法、乘法、除法部件的個數均爲1;
  • 浮點加法、乘法、除法運算延遲分別爲六、七、10個時鐘週期;
  • 採用流水方式;
  • 不採用定向機制;
  • 不採用延遲槽;
  • 採用符號地址;
  • 採用絕對週期計數。

 

當模擬器工做在非流水方式下(配置菜單中的"流水方式"前沒有"√"號)時,下面敘述中有關流水段的內容都沒有意義,應該忽略之。 設計

MIPSsim的窗口

在流水方式下,模擬器主界面中共有7個子窗口,它們是:代碼窗口、寄存器窗口、流水線窗口、時鐘週期圖窗口、內存窗口、統計窗口和斷點窗口。每個窗口均可以被收起(變成小圖標)、展開、拖動位置和放大/縮小。當要看窗口的所有內容時,能夠將其放大到最大。3d

在非流水方式下,只有代碼窗口、寄存器窗口、內存窗口和斷點窗口。blog

1. 代碼窗口 ip

代碼窗口給出內存中代碼的列表,每條指令佔一行,按地址順序排列。每行有5列(當所有顯示時):地址、斷點標記、指令的機器碼、流水段標記和符號指令。如圖2.1所示。內存

圖2.1 代碼窗口開發

 

圖中不一樣抹色的行表明相應的指令所處的執行段。黃色表明IF段,綠色表明ID段,紅色表明EX段,青色表明MEM段,棕色表明WB段。get

該窗口中各列的含義以下:

  • 地址:以16進制的形式給出。內存是按字節尋址的,每條指令佔4個字節。 當採用符號地址時,會在相應的位置給出彙編程序中出現的標號。
  • 斷點標記:若是在該指令處設有斷點,則顯示相應的標記。斷點標記的形式爲 B.X(X爲段名),表示該斷點是設置在該指令的"X"段。例如,若某行的斷點標記爲"B.EX",則表示在該指令的EX段設置了斷點。

    當模擬器工做在非流水方式下時,斷點的標記爲B。

  • 機器碼:該行所對應的指令的十六進制機器碼。若該行無指令,則僅僅顯示4字節數據;
  • 流水段標記:表示當該指令正在執行時,它在當前週期該指令所處的流水段。當模擬器工做在非流水方式下時,它沒有意義。
  • 符號指令:機器代碼所對應的符號指令。

 

在該窗口中選中某行(用鼠標左鍵單擊),而後再點擊鼠標右鍵,就會彈出菜單:設置斷點,清除斷點,它們分別用於在所選指令處設置斷點和清除斷點。

  • 設置斷點

選擇(點擊)要設斷點的指令à點擊右鍵à"設置斷點",彈出"設置斷點"小對話框,在"段"的下拉框中選擇斷點所在的流水段(在非流水方式下,不存在該下拉框),單擊"肯定"便可。

  • 清除斷點

選擇(點擊)指令à點擊右鍵à"清除斷點",則設置在該指令處的斷點被刪除。

2. 寄存器窗口

寄存器窗口顯示MIPSsim模擬器中的寄存器的內容。共有4組寄存器:通用寄存器、浮點寄存器、特殊寄存器和流水寄存器,分爲4欄來顯示。每一欄下分別有各自的數據格式選項,如圖2.2所示。

 

圖2.2 寄存器窗口

 

(1) 通用寄存器

MIPS64有32個64位通用寄存器:R0,R1,…,R31。它們被簡稱爲GPRs(General-Purpose Registers),有時也被稱爲整數寄存器。R0的值永遠是0。

經過數據格式選項,能夠選擇顯示的格式是十進制仍是十六進制。

(2) 浮點寄存器

共有32個64位浮點數寄存器:F0,F1,…,F31。它們被簡稱爲FPRs(Floating-Point Registers)。它們既能夠用來存放32個單精度浮點數(32位),也能夠用來存放32個雙精度浮點數(64位)。存儲單精度浮點數(32位)時,只用到FPR的一半,其另外一半沒用。

(3) 特殊寄存器

特殊寄存器有4個:

  • PC:程序計數器(32位);
  • LO:乘法寄存器的低位;
  • HI:乘法寄存器的高位;
  • FCSR:浮點狀態寄存器。

(4) 流水寄存器

  • IF/ID.IR:流水段IF與ID之間的指令寄存器;
  • IF/ID.NPC:流水段IF與ID之間的下一指令程序計數器;
  • ID/EX.A:流水段ID與EX之間的第一操做數寄存器;
  • ID/EX.B:流水段ID與EX之間的第二操做數寄存器;
  • ID/EX.Imm:流水段ID與EX之間的當即數寄存器;
  • ID/EX.IR:存放從IF/ID.IR傳過來的指令;
  • EX/MEM.ALUo:流水段EX與MEM之間的ALU計算結果寄存器;
  • EX/MEM.IR:存放從ID/EX.IR傳過來的指令;
  • MEM/WB.LMD:流水段MEM與WB之間的數據寄存器,用於存放從存儲器讀出的數據;
  • MEM/WB.ALUo:存放從EX/MEM.ALUo傳過來的計算結果;
  • MEM/WB.IR:存放從EX/MEM.IR傳過來的指令。

除了流水寄存器外,其餘寄存器均可以修改。只要雙擊某寄存器所在的行,系統就會彈出一個小對話框。該對話框顯示了該寄存器原來的值。在新值框中填入新的值,而後點擊"保存",系統就會將新值寫入該寄存器。

3. 流水線窗口

流水線窗口顯示流水線在當前配置下的組成以及該流水線的各段在當前週期正在處理的指令。如圖2.3所示。

非流水方式下,沒有該窗口。

圖2.3 流水線窗口

在該窗口中,每個矩形方塊表明一個流水段,它們用不一樣的顏色填充。在該窗口的左側是IF到WB段,其右邊爲浮點部件。浮點部件分有浮點加法部件(fadd)、浮點乘法部件(fmul)和浮點除法部件(fdiv)三種。在菜單"配置"à"常規配置"中修改浮點部件個數,可看到該窗口中對應類型的浮點部件個數會發生相應的變化。

在運行過程當中,各段的矩形方塊中會顯示該段正在處理的指令及其地址(16進制)。當雙擊某矩形方塊時,會彈出窗口顯示該段出口處的流水寄存器的內容(16進制)。

4. 時鐘週期圖窗口

該窗口用於顯示程序執行的時間關係,畫出各條指令執行時所用的時鐘週期。非流水方式下,沒有該窗口。

以窗口左上爲原點,橫軸正方向指向右方,表示模擬器前後通過的各個週期(列),縱軸正方向指向下方,表示模擬器中前後執行的各條指令(行)。如圖2.4所示。

 

圖2.4 時鐘週期圖窗口

 

橫座標有相對週期計數和絕對週期計數兩種不一樣的表示形式。在默認的絕對週期計數下,按0、一、二、… 依次遞增的順序計數。而在相對週期計數下,當前週期記爲第0個週期,而其他週期(在左邊)則按其相對於當前週期的位置,分別記爲-1,-2,-3,…等。

在由指令軸和週期軸組成的二維空間下,座標(n, i)對應的矩形區域表示指令i在第n+1週期時所通過的流水段(假設採用絕對週期計數)。

雙擊某行時,會彈出一個小窗口,顯示該指令在各流水段所進行的處理。

該窗口中還顯示定向的狀況。這是用箭頭來表示的。若在第m週期和第m+1週期間產生從指令i1到指令i2的定向,則在座標(m, i1)和(m+1, i2)表示的矩形區域之間會有一個箭頭。

5. 內存窗口

該窗口顯示模擬器內存中的內容,左側一欄爲十六進制地址,右側爲數據,如圖2.5所示。能夠直接經過雙擊來修改其內容。這時會彈出一個"內存修改"對話框,如圖2.6所示。對話框的上部區域爲數據類型與格式選擇區,經過勾選其中的一項,就能夠指定所採用的數據類型與格式。

 

圖2.5 內存窗口

 

圖2.6 "內存修改"對話框

 

在該"內存修改"對話框中,地址框最開始顯示的是被雙擊的單元的地址,用戶能夠直接修改該地址。在新值框中輸入新值,而後點擊按鈕"修改",模擬器就會把新值寫入內存中相應的單元。新值的格式必須與所選的數據類型和格式一致。

"前地址"與"後地址"按鈕分別將當前地址減小和增長一個數據長度(字節數),並顯示當前地址所指定單元的內容。"前地址"和"後地址"用於連續修改一片的內存數據。"顯示"按鈕用於顯示當前地址所指單元的內容。在修改地址後,點擊該按鈕就能夠顯示內存單元的內容。

6. 統計窗口

該窗口顯示模擬器統計的各項數據。以下所示。

(非流水方式下,沒有該窗口)

 

彙總:

執行週期總數:0

ID段執行了0條指令

 

硬件配置:

內存容量:4096 B

加法器個數:1        執行時間(週期數):6

乘法器個數:1        執行時間(週期數)7        

除法器個數:1        執行時間(週期數)10        

定向機制:不採用

 

停頓(週期數):

RAW停頓:0        佔週期總數的百分比:0%

其中:

load停頓:0        佔全部RAW停頓的百分比:0%

分支/跳轉停頓:0        佔全部RAW停頓的百分比:0%

浮點停頓:0        佔全部RAW停頓的百分比:0%

WAW停頓:0        佔週期總數的百分比:0%

結構停頓:0        佔週期總數的百分比:0%

控制停頓:0        佔週期總數的百分比:0%

自陷停頓:0        佔週期總數的百分比:0%

停頓週期總數:0    佔週期總數的百分比:0%

 

分支指令:

指令條數:0        佔指令總數的百分比:0%

其中:

分支成功:0        佔分支指令數的百分比:0%

分支失敗:0        佔分支指令數的百分比:0%

 

load/store指令:

指令條數:0        佔指令總數的百分比:0%

其中:

load:0        佔load/store指令數的百分比:0%

store:0        佔load/store指令數的百分比:0%

 

浮點指令:

指令條數:0        佔指令總數的百分比:0%

其中:

加法:0        佔浮點指令數的百分比:0%

乘法:0        佔浮點指令數的百分比:0%

除法:0        佔浮點指令數的百分比:0%

 

自陷指令:

指令條數:0        佔指令總數的百分比:0%

7. 斷點窗口

斷點通常是指指定的一條指令,當程序執行到該指令時,會中斷執行,暫停在該指令上。在本模擬器中,斷點能夠設定在某條指令的某一個流水段上(若是是在流水方式下)。當該指令執行到相應的流水段時,會中斷執行。

斷點窗口列出當前已經設置的全部斷點,每行一個。每行由3部分構成:地址(16進制),流水段名稱,符號指令。如圖2.7所示。(在非流水方式下,"段"沒有意義)

 

圖2.7 斷點窗口

 

該窗口上方有四個按鈕:添加、刪除、所有刪除、修改。

  • 添加

單擊"添加",會彈出小對話框"設置斷點",在"地址"框中輸入斷點的十六進制地址,在"段"的下拉框中選擇在哪一個流水段中斷(非流水方式下,不須要該操做,下同),單擊"肯定"便可。

  • 刪除

選中某個斷點(單擊斷點列表中相應的一項),單擊"刪除",則該斷點被清除。

  • 所有刪除

單擊"所有刪除",全部斷點都將被清除。

  • 修改

選中某個斷點,單擊"修改",會彈出小對話框"設置斷點",在"地址"框中輸入斷點的地址,在"段"的下拉框中選擇在哪一個流水段中斷,單擊"肯定"便可將原斷點修改成新設斷點。

MIPSsim的菜單

1. 文件菜單

文件菜單以下所示:

 

(1) CPU復位

將模擬器中CPU的狀態復位爲默認值。

(2) 所有復位

將整個模擬器的狀態復位爲默認值。模擬器啓動時,也是將狀態設置爲默認值。

(3) 載入程序

將被模擬程序載入模擬器的內存。被模擬程序能夠是彙編程序(.s文件),也能夠是彙編後的代碼(.bin文件)。點擊該菜單後,系統將彈出"載入"對話框,選擇要載入的文件,而後點擊"打開"。若是是.s文件,系統會對該文件進行彙編。若彙編過程無錯誤,則將產生的二進制代碼載入至模擬器的內存;如有錯誤,則報告錯誤信息。若是是.bin文件,則直接將該文件的內容載入到模擬器內存。

被載入程序在內存中連續存放,其起始地址默認爲0。該起始地址能夠從"代碼"菜單中的"載入起始地址"來查看和修改。修改時,若是輸入的地址不是4的整數倍,模擬器會自動將其歸整爲4的整數倍。

(4)退出

退出模擬器。

2. 執行菜單

該菜單提供了對模擬器執行程序進行控制的功能。在下面的執行方式中,除了單步執行,當遇到斷點或者用戶手動停止(用"停止"菜單項)時,模擬器將當即暫停執行。

 

在流水方式下,執行菜單以下所示:

 

在非流水方式下,執行菜單以下所示:

 

(1)單步執行一個週期

執行一個時鐘週期,而後暫停。其快捷鍵爲F7。該菜單僅出如今流水方式下。

(2)撤銷上一個週期

模擬器回退一個時鐘週期,即恢復到執行該週期以前的狀態。其快捷鍵爲F8。該菜單僅出如今流水方式下。

(3)執行多個週期

執行多個時鐘週期,而後暫停。點擊該菜單後,系統會彈出一個小對話框,由用戶指定要執行的週期的個數。該菜單僅出如今流水方式下。

(4)連續執行

從當前狀態開始連續執行程序,直到程序結束或遇到斷點或用戶手動停止。

(5)執行到…

點擊該菜單項後,系統會彈出一個"設定終點"小對話框,由用戶指定這次執行的終點,即在哪條指令的哪一個流水段暫停。點擊"肯定"後,模擬器即開始執行程序,直到到達終點位置或遇到斷點或用戶手動停止。所輸入的終點地址將被歸整爲4的整數倍。

(6) 停止

點擊該菜單項後,模擬器會當即暫停執行。當模擬器執行程序出現長期不結束的情況時,可用該菜單強行使模擬器中止執行。

(7)單步執行一條指令

執行一條指令,而後暫停。該指令的地址由當前的PC給出。其快捷鍵爲F7。該菜單僅出如今非流水方式下。

(8)撤銷上一條指令

模擬器回退一條指令,即恢復到執行該指令以前的狀態。其快捷鍵爲F8。該菜單僅出如今非流水方式下。

(9) 執行多條指令

執行多條指令,而後暫停。點擊該菜單項後,系統會彈出一個小對話框,由用戶指定要執行的指令的條數。

3. 內存菜單

該菜單下有3項:顯示,修改,符號表。

(1)顯示

該菜單項用於設置顯示內存的值的數據類型與格式。點擊該菜單項後,系統會彈出"內存顯示"對話框,如圖3.1所示。在選定所要的數據類型與格式後,單擊"肯定"按鈕,內存窗口中的數據就會按指定的數據類型與格式顯示。

 

圖3.1 內存顯示窗口

 

(2) 修改

該菜單項用於對內存的值進行修改。點擊該菜單項後,系統會彈出"內存修改"對話框,該對話框與圖2.6的"內存修改"相同。請參見相關的論述。

(3) 符號表

該菜單項用於顯示符號表。符號表中列出了當前被執行的程序中各符號的地址(內存地址)。

4. 代碼菜單

(1) 載入起始地址

該菜單項用於顯示和修改代碼載入內存的起始地址。若是要修改,只要在彈出的"載入起始地址"對話框中輸入新的地址,而後點擊"確認"便可。

(2) 設置斷點

點擊該菜單項,會彈出"設置斷點"小對話框,輸入斷點地址,並在"段"的下拉框中選擇斷點所在的流水段(在非流水方式下,不存在該下拉框),單擊"肯定"便可。

(3) 取消斷點

在代碼窗口中選擇某條指令,而後點擊該菜單項,則設置在該指令處的斷點被刪除。

(4) 清除全部斷點

清除全部斷點。

5. 配置菜單

配置菜單用於修改模擬器的配置。須要注意的是:修改配置將會使模擬器復位。

配置菜單以下所示:

(1) 常規配置

該菜單項用於查看和設置如下參數:(其默認值見"1、啓動程序")

  • 內存容量;
  • 浮點加法運算部件個數
  • 浮點乘法運算部件個數
  • 浮點除法運算部件個數
  • 浮點加法運算延遲週期數
  • 浮點乘法運算延遲週期數
  • 浮點除法運算延遲週期數

若是要修改這些參數,只要直接修改,而後點擊"肯定"按鈕便可。

(2) 流水方式

"流水方式"開關。當該項被勾選(即其前面有個"√"號)時,模擬器按流水方式工做,能模擬流水線的工做過程。不然(即沒有被勾選)就是按串行方式執行程序。

該項的勾選和去選(即去掉其前面的"√"號)都是經過點擊該項來實現的。下同。

當從流水方式切換爲非流水方式(或相反)時,系統將強行使模擬器的狀態復位。

(3) 符號地址

"符號地址"開關。當該項被勾選時,代碼窗口中的代碼將顯示原彙編程序中所採用的標號。不然(即沒有被勾選)就不顯示。

(4) 絕對週期計數

"絕對週期計數"開關。當該項被勾選時,時鐘週期圖窗口中的橫座標將顯示爲絕對週期,即時鐘週期按0、一、二、… 順序遞增的順序計數。不然(即沒有被勾選)就按相對週期計數,即把當前週期記爲第0個週期,而其他週期(在左邊)則按其相對於當前週期的位置,分別記爲-1,-2,-3,…等。

在非流水方式下,該菜單項不起做用(變灰)。

(5) 定向

"定向"開關,用於指定是否採用定向技術。當該項被勾選時,模擬器在執行程序時將採用定向技術。不然就不採用。

在非流水方式下,該菜單項不起做用(變灰)。

(6) 延遲槽

"延遲槽"開關,用於指定是否採用延遲分支技術。當該項被勾選時,模擬器在執行程序時將採用一個延遲槽。不然就不採用。

在非流水方式下,該菜單項不起做用(變灰)。

(7) 載入配置

用於將一個配置文件(.cfg)載入模擬器,模擬器將按該文件進行配置並復位。點擊該菜單項,系統將彈出"打開"對話框,讓用戶指定所要載入的配置文件。

(8) 保存配置

用於將模擬器當前的配置保存到一個配置文件(.cfg)中,以便之後重用。點擊該菜單項,系統將彈出"保存文件"對話框,讓用戶指定配置文件的名稱和位置。

6. 窗口菜單

(1) 平鋪

將當前已打開的子窗口平鋪在主窗口中。

(2) 層疊

將當前已打開的子窗口層疊在主窗口中。

(3) 打開全部

將全部子窗口都打開。

(4) 收起全部

將全部子窗口最小化。

(5) 選擇子窗口

在該菜單中還列出了全部的子窗口的名稱,選擇其中的任一個,將使該窗口被選中,並被提到最上層。

7. 幫助菜單

該菜單下有兩項:"幫助"和"關於MIPSsim"。前者提供用戶手冊,後者給出關於MIPSsim的版權信息和設計開發者信息。

相關文章
相關標籤/搜索