For this pseudoinstruction:

move $rt, $rs

Are both the addi and add assembly code acceptable? So could I use either

add $rt, $rs, $0

or

addi $rt, $rs, $0

?

Edit: I think I made a mistake with addi

add $rt, $rs, $0

would be the same as

addi $rt, $rs, 0

since add adds registers, and I need a constant for the immediate for addi

1 Answer

The addi instruction requires an immediate operand rather than a register, so the $0 would actually be 0:

add $rt, $rs, $0 addi $rt, $rs, 0 

Both will work and have all the needed information encoded into the instruction itself):

add $d, $s, $t 0000 00ss ssst tttt dddd d000 0010 0000 addi $t, $s, i 0010 00ss ssst tttt iiii iiii iiii iiii 

However, it would be more usual to just use the zero-locked $0 register in this particular case since that is, after all, its purpose.

I would also tend to use the unsigned variant however, since I seem to recall there may be extra overflow checking done for signed instructions:

addu $rt, $rs, $0 
3

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy