От младшего к старшему, используя умножение и деление - PullRequest
0 голосов
/ 09 декабря 2018

У меня есть школьное задание, которое требует от меня преобразования слова с прямым порядком байтов в обратный порядок байтов тремя различными способами.Одним из них является использование умножения и деления.Я знаю, что сдвиг влево умножает число на 2, но я все еще не могу понять, как его использовать.

Вот я делаю это, используя вращение.Может кто-нибудь помочь мне наступить на это и сделать это с делением и умножением?

.data

.text
.globl main

main:   li $t0,0x11223344 #number to be converted in t0

    rol $t1,$t0,8

    li $t2,0xFF00FF00 #mask in $t2
    and $t3,$t1,$t2

    ror $t1,$t0,8

    li $t2,0x00FF00FF #mask in $t2
    and $t1,$t1,$t2

    or $t3,$t3,$t1

    ror $t3,$t3,16

    li $v0,10
    syscall

Мне кажется, я не могу правильно преобразовать повороты в смены.Я делаю для rol $ t1, $ t0,8:

#rol $t1,$t0,8
loop:   beq $t1,8,exit #branch to exit if t5=8
    addi $t5,$t5,1 #t5++
    srl $t1, $t0, 1 #shift original word 1 bit to the right
    sll $t2, $t0, 31 #shift original word 31 bits to the left
    or $t1, $t1, $t2 

, но это не правильно.

Помощь приветствуется, спасибо.

...