Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.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
Assembly 替换“;及;移位和旋转寄存器,结果和输入保持不变 看起来好像用结束,不是$t3,$t3在边缘创建了一个1位的掩码,而在中间创建了0个。所以你可以做同样的事情,先把中间的位子旋转到一端,把它们移出,然后再旋转回来_Assembly_Mips_Mips64 - Fatal编程技术网

Assembly 替换“;及;移位和旋转寄存器,结果和输入保持不变 看起来好像用结束,不是$t3,$t3在边缘创建了一个1位的掩码,而在中间创建了0个。所以你可以做同样的事情,先把中间的位子旋转到一端,把它们移出,然后再旋转回来

Assembly 替换“;及;移位和旋转寄存器,结果和输入保持不变 看起来好像用结束,不是$t3,$t3在边缘创建了一个1位的掩码,而在中间创建了0个。所以你可以做同样的事情,先把中间的位子旋转到一端,把它们移出,然后再旋转回来,assembly,mips,mips64,Assembly,Mips,Mips64,但是MIPS没有硬件旋转指令ror和rol只是两次或两次移位的伪指令,因此这不会更有效 创建和使用and掩码可能是将两个输入之间的位范围归零的最佳方法。但是,您可能可以更有效地构建遮罩。像~((1)我看不出任何问题。如何用旋转或移位替换and寄存器? .text .globl __start __start: li $t1,9 li $t2,7 addi $t1,$t1,3 addi $t2,$t2,3

但是MIPS没有硬件旋转指令
ror
rol
只是两次或两次移位的伪指令,因此这不会更有效


创建和使用and掩码可能是将两个输入之间的位范围归零的最佳方法。但是,您可能可以更有效地构建遮罩。像
~((1)我看不出任何问题。如何用旋转或移位替换and寄存器?
.text       
.globl __start 

__start:            
li $t1,9        
li $t2,7        
        
addi $t1,$t1,3

addi $t2,$t2,3

li $t3,0xFFFFFFFF    
srl $t3,$t3,$t1    
sll $t3,$t3,$t1    
sll $t3,$t3,$t2   
srl $t3,$t3,$t2    
not $t3,$t3
    
li $s1,0x12345678   # input data in $s1 register

and $s2,$s1,$t3     # output data in $s2 register

li $v0,10      
syscall         # exit