Assembly 如何生成装配轮班代码?
我正在使用SIM-PL汇编程序(MIPS指令)并尝试生成此汇编代码。我需要将寄存器值移位为1,但当它到达最后一位时,它必须“重新启动”并将值添加到第一位。我甚至不知道该怎么开始。有人能帮我吗Assembly 如何生成装配轮班代码?,assembly,mips,Assembly,Mips,我正在使用SIM-PL汇编程序(MIPS指令)并尝试生成此汇编代码。我需要将寄存器值移位为1,但当它到达最后一位时,它必须“重新启动”并将值添加到第一位。我甚至不知道该怎么开始。有人能帮我吗 pattern = 110 Register value = 00......00000110 Register value = 00......00001100 Register value = 00......00011000 .... Register value = 11......0000000
pattern = 110
Register value = 00......00000110
Register value = 00......00001100
Register value = 00......00011000
....
Register value = 11......00000000
Register value = 10......00000001
Register value = 00......00000011
....
这叫做旋转。由于mips没有旋转,您可以简单地将其分解为(x>>31)|(x移位将“新”输入位填充为零或1,具体取决于移位类型
您所描述的是旋转指令。旋转指令将离开寄存器一端的位推入寄存器另一端的输入位
rol用于左旋转,ror用于右旋转
大多数MIPS汇编器为您实现旋转,但MIPS芯片本身没有内置的旋转指令。这里可能重复的只是为了学究:MIPS在2002年发布的MIPS32r2 ISA中引入了旋转指令。但是像SPIM这样的教学工具大多停留在旧版本的ISA上。