умножение числа на 12 в MIPS - PullRequest
       0

умножение числа на 12 в MIPS

0 голосов
/ 23 октября 2018

Хорошо, поэтому я пытаюсь создать грубую программу в MIPS, которая умножает любое число на 12. И я решил использовать для этого сдвиг.Совершенно новичок в MIPS, поэтому не уверен, как это сделать.Я уверен, что кто-то здесь может быть таким милым и показать мне.

addi $a0, 2

sll $t0,$a0,2

li $v0,2

move $a0,$t0

syscall

li $v0,5

syscall

1 Ответ

0 голосов
/ 23 октября 2018

Если вы попытаетесь превратить 12 в степень двух умножений (что легко сделать с помощью сдвига):

12 = 4 * 3 =  4 * (2 + 1)

Итак, предполагая, что a0 имеет исходное значение, которое вы бы сделали в сборке, эквивалентной:

t0 = a0<<1  # the 2 part
t0 = t0 + a0 # that's the 2+1 done
a0 = t0<<2  # that's the  4 * (2 + 1) put back to the original register

Так же и ассемблер, все еще предполагая, что в a0 есть число (и работает в том же порядке, что и выше):

sll $t0, $a0, 1
add $t0, $t0, $a0
sll $a0, $t0, 2

Теперь a0 имеет результат

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...