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