Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MIPS反转位代码(从C代码转换而来)…但它不工作_C_Assembly_Reverse_Mips32_Mips64 - Fatal编程技术网

MIPS反转位代码(从C代码转换而来)…但它不工作

MIPS反转位代码(从C代码转换而来)…但它不工作,c,assembly,reverse,mips32,mips64,C,Assembly,Reverse,Mips32,Mips64,下面是C代码: unsigned int reverse(register unsigned int x) { x = (((x & 0xaaaaaaaa) >> 1) | ((x & 0x55555555) << 1)); x = (((x & 0xcccccccc) >> 2) | ((x & 0x33333333) << 2)); x = (((x & 0xf0f0f0f0) &

下面是C代码:

unsigned int reverse(register unsigned int x)
{
    x = (((x & 0xaaaaaaaa) >> 1) | ((x & 0x55555555) << 1));
    x = (((x & 0xcccccccc) >> 2) | ((x & 0x33333333) << 2));
    x = (((x & 0xf0f0f0f0) >> 4) | ((x & 0x0f0f0f0f) << 4));
    x = (((x & 0xff00ff00) >> 8) | ((x & 0x00ff00ff) << 8));
    return((x >> 16) | (x << 16));
}

我试图将C代码转换为MIPS,但它不能正常工作。输出通常是负整数。请帮助我将此代码转换为MIPS程序集。我的代码出了什么问题?

我建议您也尝试使用mips编译器在汇编阶段之后停止编译,以防仍然遇到问题。然后可以比较生成的代码。我建议编译时不要进行优化

此链接应该对您有所帮助(假设您可以访问mips编译器)。
我犯了一个巨大的错误。我不希望输出为ASCII码。当我们输入1时,它等于00000031,表示二进制位0000 0011 0001。。但我认为数字1的二进制位等于0000 0001..这就是为什么输出与我预期的不同user3003505

我找不到将用户输入的字符串转换为
int
的位置。或者$t3,$t2,$t1:我假设这会产生t3=t2或t1的效果,而不是t3=t3或t2或t1……如果是这样,我认为您在每一步的结果都是过火了……如果您试图打印刚刚输入的值……而没有任何位操作;你得到预期的输出了吗?…我已经(再次)检查了代码,它看起来很好。因此,传递参数可能有问题……我是个白痴:)我犯了一个巨大的错误。我不希望输出为ASCII码。当我们输入1时,它等于00000031,表示二进制位0000 0011 0001。。但我认为数字1的二进制位等于0000 0001..这就是为什么输出与我预期的不同。。
.data

prompt:
    .asciiz " please enter a binary number of up to 8 digits: \n"

prompt2:
    .asciiz " / "

    .text
    .globl main

main:   

    la  $a0, prompt
    li  $v0,4
    syscall 
    li  $v0,5
    syscall
    move    $t3,$v0




    andi $t0,$t3,0xAAAAAAAA
    srl  $t1,$t0,1
    andi $t0,$t3,0x55555555
    sll  $t2,$t0,1
    or   $t3,$t2,$t1


    andi $t0,$t3,0xCCCCCCCC
    srl  $t1,$t0,2
    andi $t0,$t3,0x33333333
    sll  $t2,$t0,2
    or   $t3,$t2,$t1

    andi $t0,$t3,0xF0F0F0F0
    srl  $t1,$t0,4
    andi $t0,$t3,0x0F0F0F0F
    sll  $t2,$t0,4
    or   $t3,$t2,$t1

    andi $t0,$t3,0xFF00FF00
    srl  $t1,$t0,8
    andi $t0,$t3,0x00FF00FF
    sll  $t2,$t0,8
    or   $t3,$t2,$t1



    srl  $t1,$t3,16
    sll  $t2,$t3,16
    or   $t3,$t2,$t1


    la  $a0,prompt2
    li  $v0,4
    syscall

    move    $a0,$t3
    li  $v0,1
    syscall


    li  $v0,10
    syscall