Когда я умножаю 100000 и 200000, я получаю a817c800 в регистре 'lo' и 4 в регистре 'hi'
Correct.
Поскольку результат имеет ширину 64 бита, и вы используете 32-разрядный процессор MIPS, вам нужно два регистра для хранения результата.
В вашем коде старшие 32 бита находятся в s1
, а младшие 32 бита - в s0
. Таким образом, два регистра s1
и s0
представляют 64-битное значение 4a817c800 (шестнадцатеричное), которое составляет 20000000000 (десятичное). И это правильный результат.
Ваш следующий вопрос может быть о том, как вы можете распечатать 64-битное число с помощью qtspim. К сожалению, у меня нет опыта работы с симуляторами MIPS (только с реальными процессорами MIPS), поэтому я не знаю, возможно ли это вообще.