2017-05-30 90 views
0

我的理解是:差異登錄擴展了即時VS零擴展立即

零擴展的速釋意志墊立即與左零,因此:

ori $t1, $0, 0xF 

結果:

0x0000000F 

登錄擴展直接 - 意志墊眼前最顯著位,所以:

addi $t1, $0, 0xF 

結果:

0xFFFFFFFF 

我顯然是錯誤的,但爲什麼呢?

+1

因爲你需要考慮立即數的大小,這是16位mips(我假設你使用mips,你忘了提及...)因此你的立即數實際上是'0x000F',所以MSB是零。 – Jester

+0

噢,好的。我想我正在尋找一個例子,其中標誌擴展可能導致一個問題。 – Gigalala

+0

使用更大的直接例如'0xffff'。 – Jester

回答

2

您需要考慮立即數的大小,即16位mips。因此,你的直接實際上是0x000F,所以MSB是零。爲了說明符號擴展爲負數,請使用位數爲#15的更大的立即數,例如0xffff,這確實將被cpu解釋爲0xffffffff