Я новичок в сборке, и я знаю, что это довольно простой вопрос. Я должен был выполнить сложение целых чисел без знака для $a0
и $a2
и сохранить результат в $v0
, проверив флаг переноса.
В задании сказано:
Используйте только
addu
, а неadd
, для сложения и используйтеslt
для определения того, привело ли сложение двух целых чисел без знака к переносу, без использования инструкций условного перехода.
Вот мой код:
addu $v0, $a0, $a2
sltu $t0, $v0, $a0
Для этого кода, если создается перенос, $t0
равно 1
. Но в вопросе говорилось, что для проверки флага переноса используйте только slt
, и нельзя использовать инструкцию условного перехода. Я немного смущен тем, как это будет работать. Любая помощь будет оценена по достоинству.
$t0
, я так понимаю. - person Michael   schedule 03.11.2015slt
не имеет большого смысла (это можно сделать, но бессмысленно многословно) - person harold   schedule 03.11.2015sltu
разрешено, я не понимаю, в чем вопрос? - person Jester   schedule 03.11.2015and
/or
? - person Jester   schedule 03.11.2015slt
, вы можете сделать это с четырьмяaddu
иslt
(уничтожит один из операндов, который можно восстановить с помощью пятогоaddu
) - person harold   schedule 03.11.2015slt
вместоsltu
, так как вы хотите выполнить сравнение со знаком, а не сравнение без знака. - person markgz   schedule 03.11.2015a <u b = (a ^ signbit) <s (b ^ signbit)
, а также то, что переворачивание знака — это то же самое, что прибавление или вычитание 1 из него/к нему. Вы можете избежатьsltu
таким образом (и даже xor, если хотите). - person harold   schedule 03.11.2015sum = a+b;
/carry = sum<a;
. (илиsum<b
, если так удобнее). - person Peter Cordes   schedule 29.06.2021