我正在编写一个 MIPS 汇编语言程序,通过使用“sll”操作移位位来执行乘法。这是我的源代码:
.text
.globl main
main:
ori $5,$0,2 # put x into $5
ori $6,$0,4 # put y into $6
sll $5,$5,3 # put 8*x into $8
sll $6,$6,1 # put 2*y into $9
subu $10,$8,$9 # $5 - $6, put result in 10
addiu $10,$10,14 # add register 10 and number 14, put result in 10
文件结束
我的“sll $5, $5, 3”行应该将寄存器 5 的内容乘以 2^3,然后将其放回寄存器 5。它不是显示 16,而是显示 10。我的猜测是三位移位它的执行导致溢出问题,但我想不出办法来纠正这个问题。