0
嗨,我堅持我的任務,這就要求我寫一個C程序讀取輸入文件,如這一發現地址:幫助與十六進制的MIPS指令
Registers
r1 = 0c100009
Instructions
0c100009
3c071001
8ce20011
84e33080
80e48000
ace2ffff
a4e39001
a0e48088
03e00008
,並找出是否指令是保存或加載,指令訪問的字節數,以及內存中的第一個字節的地址。
我需要幫助瞭解指令是如何工作的。我知道,我必須指示爲二進制翻譯,例如
8ce20011
到
100011 00111 00010 0000000000010001
這是
lw $t3 17($s7)
,但我不知道如何計算的地址和訪問的字節數。我想忽略所有不保存或加載的指令。
而且,符號擴展是什麼意思?
謝謝你的幫助。
我的任務要我忽略除磅,LBU,LH,LHU,LW,SB,sh和SW其他所有指令。但是,在這種情況下,我的程序是否需要處理第二行指令lui $ 7 4097來計算第三行lw的地址?而地址只是4097 + 17並且轉換回1012的十六進制?我有點混淆這是如何工作的。 – CFC
LUI將一個常量加載到目標寄存器的高16位中,並將低16位清零。所以「lui $ 7,0x1001」將$ 7設置爲0x10010000。然後「lw $ 2,17($ 7)」將嘗試從0x10010000 + 0x11加載32位,即0x10010011(這將觸發地址錯誤異常)。你的家庭作業不是很精確。 – markgz
噢好吧,這意味着我必須通過每條指令來了解下一個人在說什麼。謝謝。 – CFC