[英]MIPS32 assembly beq instruction explanation
有人可以解釋為什么下面的裝配線有意義嗎?
beq $0, $0, 1
請注意,$ 0指的是一個始終值為0的寄存器。因此,如果$ 0 = $ 0,則轉到PC + 4 + 1,否則轉到下一條指令。
我的困惑來自beq指令的立即數,即1。這是否意味着我們要處理PC + 5? MIPS在訪問內存時是否需要對齊,並且所有內存位置都必須被4整除?
請注意,這本書說該指令只是跳過下一條指令。
beq $t, $s, offset
的語義為
if ($t == $s)
PC = PC + 4 + 4 * offset;
else
PC = PC + 4
簡而言之,在指令執行時PC總是前進4,並且假定立即數缺少低兩位,因為它們始終為零,並且可以通過移位重新引入( offset * 4
= offset << 2
)。
beq $0, $0, 1
只是跳過了下一條指令,因為它是重言式設置PC = PC + 8
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.