簡體   English   中英

為什么我們不能將寄存器與立即數(Assembly-MIPS)進行比較(bne-beq)?

[英]Why we cant compare (bne-beq) a register with an immediate (Assembly-MIPS)?

例如在add上我們有addi用於添加寄存器和立即數,為什么在這種情況下我們不能有bnei或beqi ...

我應該回答這個問題,但是我不確定...有什么幫助嗎?

原因是指令編碼:

ADDIBNE/BEQ都是I型指令 但是,盡管ADDI指令中的立即數字段用於存儲加法的立即數操作數,但在BEQ/BNE的情況下,它用於存儲分支偏移量。

可能會有MIPS匯編器,使您可以在條件分支指令中使用立即操作數,但是它們會將那些偽指令擴展為多個實際指令。

在具有標志的體系結構中,分支指令通常遵循比較指令,該比較指令可以比較寄存器和立即數並設置適當的標志(通常稱為CMP,但通常其他指令也可以設置標志)。 然后,分支僅檢查標志。

(這是在問題未告知MIPS之前發布的,MIPS不使用標志)

您不想使用16位立即數作為要跳轉到的地址,因為這限制了您可以跳轉的位置。 MIPS具有32位地址。 如果僅使用16位,則使用的地址可能很小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM