数组的存储
数组存储在存储器中从基址(数组的第一个元素所在地址)开始的一片连续区域。
数组元素的访问
数组的下标其实就是数组元素所存地址相对于基址的偏移量。基址与数组的下标可以确定数组中一个元素的位置,基址加元素下标就是该元素所在的地址。访问数组时先将数组的基址存入寄存器。再使用lw指令将元素读入其他寄存器。
lui 存基址的寄存器, 基址的高16位数
ori 存基址的寄存器, 存基址的寄存器, 基址的低16位数
# 以上两行指令用于将32位的地址存入寄存器
lw 用于存放读取的元素的寄存器, 数组下标数字(存基址的寄存器)
如果访问数组时要对数组元素进行修改,就对存放元素的寄存器中的数据进行处理,最后再使用sw指令将修改后的元素存到原来的位置。
字符数组
与一般的数组不同,字符数组以字节为单位存储。每个元素存放在一个字节(8位)大小的空间里,采用ASCII码编码。
对字符数组读取写入时,不用lw与sw指令,用无符号字节读取指令lbu,字节读取指令lb和字节写入指令sb指令。
无符号字节读取指令lbu对字节进行高位补0后存入32位寄存器。
字节读取指令lb对字节高位进行符号补位之后存入32位寄存器。
字节写入指令sb会将32位寄存器中的高位舍去,把低位存入字节中。