2012-03-13 160 views
0

如果我写MIPS .word澄清

.data       
one: .word 1 
在我的计划

,后来我写

beq $a3,one,loop1 

将它的工作?即确实迟到标签作为参数?

回答

1

号您必须将这个词第一次加载到寄存器:lw $t0, one

MIPS是一个加载/存储架构。从内存获取值的唯一方法是使用加载指令。

0

其实,我最后做的:

beq $a3, 1, basecase #check if value at $a3 is equal to 1 

这句法也适用。不一定必须有2个寄存器。

1

使用beq $a3, 1, basecase完全错误。它碰巧为你工作,因为寄存器1($ at)碰巧等于寄存器$ a3。这种共同点并不令人感到意外,因为MIPS汇编器使用$at作为临时寄存器。

beq指令的二进制编码使用:位31:26作为操作码(000100);对于第一个寄存器编号,位25:21;对于第二个寄存器编号,位20:16;位15:0作为地址偏移量。这条指令没有立即值的规定。