Конвертирование MIPS в C, специально для sltiu - PullRequest
0 голосов
/ 25 февраля 2012

Я довольно новичок в MIPS, и мне нужно преобразовать этот код MIPS в C:

addi $t0, $t0, 0
sltiu $t1, $t0, 1000
beq $t1, $0, 7
sll $t1, $1, 2

После этого идет еще несколько операций, но у меня возникли проблемы с переводом. Я думаю, что это что-то вроде (не фактический код, следующий):

if (condition)
   go 7 lines down

Но меня смущает 1000 в sltiu, и как это настроить. Если кто-нибудь может мне помочь, я был бы очень признателен. Спасибо!

1 Ответ

1 голос
/ 25 февраля 2012
addi $t0, $t0, 0
    #t0 = t0 + 0;
sltiu $t1, $t0, 1000
    #t1 = (t0 < 1000) ? 1 : 0;
beq $t1, $0, 7
    #if (t1 == 0)
    #    goto foo; /* label foo is 28 bytes down the program counter */
sll $t1, $1, 2
    #t1 = $at << 2;

Вы можете упростить код до:

if ($t0 >= 1000)
   goto foo; /* label foo is 28 bytes down the program counter */
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...