2015-05-31 52 views
-1

假設在一個32位的小端MIPS處理器有人可以告訴我如何,我可以解決它,我怎麼可以瞭解它

addi sr1. sr0, 0x80000000 
and sr3, sr2, sr1 
beq sr3, sr0, end 
addi sr2, sr2, 1 

end: 
  1. 註冊sr2x運行下面的程序,一個有符號整數。程序執行的功能是什麼,用高級語言編寫?

  2. 什麼是存儲在Sr2價值,在節目的最後,如果Sr2=0xfffffff5

請能有人告訴我,怎麼在那裏我可以開始學習或任何一本書?

+0

非常感謝 –

回答

0

這裏已經很晚了,所以帶上一點鹽吧。

函數增量X,如果它是負

int unknown(int x) { return x<0 ? ++x : x;} 

第一指令集$r1爲值0x80000000這是一個位掩碼。這使用$0總是0,所以$r1 = 0 + 0x80000000 = 0x80000000

第二條指令和$r2x值)與$r1(位掩碼)並將結果存儲在$r3中。當且僅當x爲負數(參見Two Complement格式)時,此結果爲0x80000000,否則爲零。

如果$r3爲零,即如果x爲正或零,則第三條指令跳轉到結尾。

最後一個指令增量爲x,僅當x爲負時才執行。

如果$r2 = 0xfffffff5x-11(又是兩個補碼)。
所以在功能x-10$r2 = 0xfffffff6

注意:要轉換爲和從兩個補碼只是不是數字,並添加一個。

+1

@LinoKingo關於MIPS的好課程可以在這裏找到([vol1](http://www.cs.cornell.edu/courses/cs3410/2015sp/MIPS_Vol1.pdf)和[vol2]( http://www.cs.cornell.edu/courses/cs3410/2015sp/MIPS_Vol2.pdf))。更爲用戶友好的指南也在[這裏](http://www.cs.unibo.it/~solmi/teaching/arch_2002-2003/AssemblyLanguageProgDoc.pdf) –

相關問題