Как оптимизировать код за счет уменьшения числа остановок или количества команд?
Я пытаюсь выполнить d = (a + b) * (bc) в MIPS и спрашиваю себя, можно ли сделать мой код более эффективным.
LW $1, 1($0) #LOAD A
LW $2, 2($0) #LOAD B
LW $3, 3($0) #LOAD C
ADD $ZERO, $ZERO, $ZERO #NOP
ADD $1, $1, $2 #ADD A & B
SUB $3, $2, $3 #SUBTRACT B & C
ADD $ZERO, $ZERO, $ZERO #NOP
ADD $ZERO, $ZERO, $ZERO #NOP
MUL $3, $1, $3 #MULTIPLY A & C
ADD $ZERO, $ZERO, $ZERO #NOP
ADD $ZERO, $ZERO, $ZERO #NOP
SW $3, 4($0) #STORE D
Изображение данных и их адреса
Обратите внимание, что это адресно-ориентированная реализация, и значение по умолчанию в $ 0 можно принять равным 0.