使用乘法和除法从小到大的字节序-MIPS汇编

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用乘法和除法从小到大的字节序-MIPS汇编相关的知识,希望对你有一定的参考价值。

我有一项学校作业,要求我以三种不同方式将单词从小字节序转换为大字节序。其中之一是使用乘法和除法。我知道向左移动会将数字乘以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 

但不正确。

感谢您的帮助,谢谢。

答案

我也有完全相同的问题,您是否找到了直到今天的解决方案?这真的很有帮助。

以上是关于使用乘法和除法从小到大的字节序-MIPS汇编的主要内容,如果未能解决你的问题,请参考以下文章

汇编中的乘法和除法

在 MIPS 上对 C++ 和汇编代码进行微架构分析

汇编语言 除法指令

MIPS 到 C 的翻译

MIPS汇编指令集

从 C 编译器理解 MIPS 汇编代码