MIPS交换两个阵列元素 [英] MIPS swap two array elements

查看:18
本文介绍了MIPS交换两个阵列元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我有一个包含10个元素的数组,并假设$S1寄存器已经加载了基地址。如何编写交换A[4]和A[9]的简单操作?

到目前为止,我已经想出了一些方法,包括使用TEMP寄存器,但我不确定它是否正确:

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)

这篇关于MIPS交换两个阵列元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆