What I want to do?
Translate this code without using mul command but only the other possible commands like add, subtruct and logical shift commands.
.text
.globl main
main: # execution starts here
li $t0,19057
li $t1,123 # input data in $t1
sll $t0,$t0,27
srl $t0,$t0,26
mul $t2,$t1,$t0
li $v0,10
syscall
The program created must have the same exit as the initial one in $t2 register without using the mul command. With what commands should I replace the mul command in order to have the same output?
Note: $t1 register can take any number from 1 to 10.000.000.
I solved it by using a loop that simulates how the MUL command works. It then stores the final result in the register $t2.
.text
.globl main
main: # execution starts here
li $t0,19057
li $t1,123 # input data in $t1
# shift left by 27 bits
sll $t0,$t0,27
# shift right by 26 bits
srl $t0,$t0,26
# initialize result to 0
li $t2, 0
# loop until the multiplier is 0
loop:
beq $t0, $0, end
# add the multiplicand to the result
add $t2, $t2, $t1
# decrement the multiplier
addi $t0, $t0, -1
# jump to the beginning of the loop
j loop
# end of the multiplication
end:
li $v0,10
syscall