Код сборки foolowing приведен в моем учебнике.Код сборки MIPS в цикле
Loop:
sll $t1, $t0, 2
add $t2, $a0, $t1
sw $zero, 0($t2)
addi $t0, $t0, 1
slt $t3, $t0, $a1
bne $t3, $zero, Loop
# return where we were
jr $ra
Из этого кода у меня есть два вопроса. Первый вопрос касается второй строки сверху. Получаю, что инструкция sll: сдвиг влево логический, который сдвигает бит влево. Поскольку сумма сдвига равна 2, она будет делать 0000 -> 0100 = 4 в десятичной системе. Но я не получаю его после первого цикла. Если мы сдвинем это налево на 2, разве это не умножено на более чем 4? И второй вопрос в том, можно ли оптимизировать этот код? По-моему, я могу изменить sll и добавить части в код, но я не уверен. Любые комментарии?