C MIPS操作存储在数据中的数组

C MIPS操作存储在数据中的数组,c,arrays,mips,C,Arrays,Mips,我似乎无法想象这是怎么回事。 我正在尝试将这个简单的赋值从C转换为mips: #define ARRAYSIZE 16 int intarray[]={1, 5, -3, 6, 12, 21, 18, 44, 32, 9, 23, 10, 11, 99, 100, 24}; intarray[little] = intarray[ARRAYSIZE-1]; 所以我在数据中定义了数组 .data intarray: .word 1, 5, -3, 6, 12, 21, 18, 44, 32

我似乎无法想象这是怎么回事。 我正在尝试将这个简单的赋值从C转换为mips:

#define ARRAYSIZE 16
int intarray[]={1, 5, -3, 6, 12, 21, 18, 44, 32, 9, 23, 10, 11, 99, 100, 24};

intarray[little] = intarray[ARRAYSIZE-1];
所以我在数据中定义了数组

.data
  intarray: .word 1, 5, -3, 6, 12, 21, 18, 44, 32, 9, 23, 10, 11, 99, 100, 24
现在的问题是,我知道如何从这个数组中轻松加载一个单词

lw $t0, intarray($a0)
但我不知道如何保存到该数组,因为它不在寄存器中。我甚至可以操纵那个数组,或者我必须在寄存器中构建一个重复的数组吗?

我把lw和sw混为一谈,在汇编中思考一开始可能会让人困惑。事实证明,我一直在寻找的答案是,您需要首先加载arrayla地址的基址,然后调用sw寄存器地址。

但我不知道如何使用sw指令保存到该数组。sw保存到寄存器,但这如何将数组从数组[1,2,3]转换到数组[1,4,3]。我的意思是我可以保存数组[1]或数组[2]来注册$s0,但这如何帮助我返回变异数组[1,4,3]。你明白我的意思吗?sw保存到寄存器号。它获取寄存器的值并将其存储在内存中。