MIPS 交换两个数组元素
MIPS swap two array elements
假设我有一个包含 10 个元素的数组,并假设 $s1 寄存器已经加载了基地址。我将如何编写一个交换 A[4] 和 A[9] 的简单操作?
到目前为止,我已经想到了一些使用临时寄存器的方法,但我不确定它是否正确:
lw $t0, 4($s1)
sw 4($s1), 9($s1)
sw 9($s1), $t0
假设您正在尝试交换 32 位整数数组中的项,数组中的每个项占用 4 个字节。
因此,您必须将每个索引乘以元素大小才能找到每个项目。
并且您的第二条指令无效,因为 sw
它只接收一个内存地址(目标操作数)。
所以最简单的方法是加载这两个项目,然后将它们与交换的数据一起保存:
lw $t0, 16($s1)
lw $t1, 36($s1)
sw $t0, 36($s1)
sw $t1, 16($s1)
假设我有一个包含 10 个元素的数组,并假设 $s1 寄存器已经加载了基地址。我将如何编写一个交换 A[4] 和 A[9] 的简单操作?
到目前为止,我已经想到了一些使用临时寄存器的方法,但我不确定它是否正确:
lw $t0, 4($s1)
sw 4($s1), 9($s1)
sw 9($s1), $t0
假设您正在尝试交换 32 位整数数组中的项,数组中的每个项占用 4 个字节。
因此,您必须将每个索引乘以元素大小才能找到每个项目。
并且您的第二条指令无效,因为 sw
它只接收一个内存地址(目标操作数)。
所以最简单的方法是加载这两个项目,然后将它们与交换的数据一起保存:
lw $t0, 16($s1)
lw $t1, 36($s1)
sw $t0, 36($s1)
sw $t1, 16($s1)