[英]Why we cant compare (bne-beq) a register with an immediate (Assembly-MIPS)?
例如在add上我們有addi用於添加寄存器和立即數,為什么在這種情況下我們不能有bnei或beqi ...
我應該回答這個問題,但是我不確定...有什么幫助嗎?
原因是指令編碼:
ADDI
和BNE/BEQ
都是I型指令 。 但是,盡管ADDI
指令中的立即數字段用於存儲加法的立即數操作數,但在BEQ/BNE
的情況下,它用於存儲分支偏移量。
可能會有MIPS匯編器,使您可以在條件分支指令中使用立即操作數,但是它們會將那些偽指令擴展為多個實際指令。
在具有標志的體系結構中,分支指令通常遵循比較指令,該比較指令可以比較寄存器和立即數並設置適當的標志(通常稱為CMP,但通常其他指令也可以設置標志)。 然后,分支僅檢查標志。
(這是在問題未告知MIPS之前發布的,MIPS不使用標志)
您不想使用16位立即數作為要跳轉到的地址,因為這限制了您可以跳轉的位置。 MIPS具有32位地址。 如果僅使用16位,則使用的地址可能很小。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.