如果我写
.data
one: .word 1
以后我的程序中写了
beq $a3,one,loop1
它会起作用吗? ie beq late标签作为参数?
答案 0 :(得分:1)
没有。您必须先将单词加载到寄存器中:lw $t0, one
MIPS是一种加载/存储架构。从内存中获取值的唯一方法是使用加载指令。
答案 1 :(得分:1)
使用beq $a3, 1, basecase
完全错误。它碰巧适合你,因为寄存器1($ at)碰巧等于寄存器$ a3。这种共同发生并不太令人惊讶,因为MIPS汇编程序将$at
用作临时寄存器。
beq
指令的二进制编码使用:位31:26作为操作码(000100
);第25:21位为第一个寄存器号;位20:16为第二个寄存器号;位15:0表示地址偏移量。此指令没有直接值的规定。
答案 2 :(得分:0)
实际上,我最终这样做了:
beq $a3, 1, basecase #check if value at $a3 is equal to 1
这种语法也有效。不一定要有2个寄存器。