撰寫或開啟程式
從範例開始、輸入您自己的組合語言,或開啟 .s 檔。資料放在 .data 下,程式碼放在 .text 下。
輸入含標籤與虛擬指令的 RV32IM 組合語言,然後全速執行或一次執行一條指令。
設定中斷點、倒退執行,並在程式執行時觀察暫存器、記憶體、機器碼與主控台。
正在載入 RISC-V 模擬器…
從範例開始、輸入您自己的組合語言,或開啟 .s 檔。資料放在 .data 下,程式碼放在 .text 下。
按「執行」全速執行,或按「單步」執行一條指令並查看哪些暫存器與記憶體有變化。點選行號旁即可設定中斷點。
輸出與輸入都在主控台中進行。檢查暫存器與記憶體、倒退找出出錯的地方,並以十六進位複製機器碼。
多跑了一步?「倒退一步」會復原最後幾條指令,連同暫存器、記憶體與輸出,讓您不必從頭執行就能再看一次。
call 會覆寫 ra。會呼叫其他函式的函式必須先把 ra 存到堆疊,並在 ret 之前還原,就像階乘範例那樣。
機器碼分頁會統計每條指令執行了幾次。迴圈主體多跑了一次或從未執行,就直接指出分支有誤。
需要處理器設計的插圖或課程用的短片嗎?用 WaveSpeed AI 製作。
符合資格的新帳號可獲得 $1 免費點數,無需信用卡。 生成器需另外擁有帳號與點數。RISC-V 模擬器則完全免費。
是的。這款 RISC-V 線上模擬器免費使用,無需帳號、執行次數不限,也不需安裝任何東西。
32 位元基本整數指令集(RV32I)、用於乘法、除法與餘數的 M 擴充,以及讀取 cycle、time 與 instret 計數器——也就是計算機結構與組合語言課程所教的核心指令集。
大多數都可以。程式碼從 0x00400000 開始、資料從 0x10010000 開始,系統呼叫也使用與常見教學模擬器相同的編號(a7 = 1 列印整數、4 列印字串、5 讀取整數、10 結束等)。「參考」分頁列出了全部系統呼叫。
將呼叫編號放入 a7、參數放入 a0,然後執行 ecall。程式讀取時,主控台會要求輸入:輸入後按 Enter。您也可以在程式要求前預先輸入。
指令數是精確的。週期數則是以簡單的循序核心估算:每條指令 1 個週期,載入 2,跳躍或成立的分支 3,乘法 3,除法 33。
可以。「機器碼」分頁會顯示每條指令的位址、十六進位字組與解碼後的形式。可以十六進位每行一個字組複製,或下載 .hex 或原始 .bin 檔。
字組必須在 4 的倍數位址讀寫,半字組則在 2 的倍數。請在字組資料前加上 .align 2,或檢查您計算出的位址。錯誤訊息會指出位址與行號。
可以。「倒退一步」最多可復原最後 4,096 條指令,連同暫存器、記憶體與輸出,讓您不必從頭執行就能找出錯誤。
不會。組譯與執行都在您的瀏覽器中進行,程式會儲存在這個瀏覽器的儲存空間中,下次開啟時仍在。
免費、私密,隨時可用。