我有一個C代碼在我面前,我不得不翻譯成MIPS彙編語言。如何在彙編語言(MIPS)中執行小於或等於?
我不是在尋找一個直接的答案,但我希望有人糾正我對這個問題的思考方式。
在我的前面的C代碼:
x = ((++z)<=y);
我在考慮到在x,y和z分別存儲在寄存器$ 6,$ 7 $ 8
問題是我不能使用運算符來比較直接小於或等於。我僅限於使用以下比較操作數:bne,beq,ori,slt。
我走近這一問題的方法是這樣:
addi $8,$8,1 #this will increment z by 1 to have ++z
slt $1,$8,$7 #compares ++z to y if ++z is < than y, it will store 1 in $1
beq $8,$7,Label #compares if $8 = $7, if so the code jumps to Label
Label addi $t0,$0,1 #if ++z = y, stores 1 in $t0
ori $6,$t0,$1 #Or's the t0 and t1 and accordingly stores 0 or 1 in x
這是解決這個問題的正確方法?
跳轉到在下一個指令是在幾乎所有情況下毫無意義。 – Michael
你是什麼意思? – Ralph
'beq $ 8,$ 7,Label' /'Label ...' – Michael