计算机组成学习记录-体系结构-数组

本文介绍了数组在内存中的存储方式,如何通过基址和下标计算元素地址,以及访问和修改数组元素的操作。特别关注了字符数组的特殊性,包括使用不同指令对字节进行读写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数组的存储

数组存储在存储器中从基址(数组的第一个元素所在地址)开始的一片连续区域。

数组元素的访问

数组的下标其实就是数组元素所存地址相对于基址的偏移量。基址与数组的下标可以确定数组中一个元素的位置,基址加元素下标就是该元素所在的地址。访问数组时先将数组的基址存入寄存器。再使用lw指令将元素读入其他寄存器。

lui 存基址的寄存器, 基址的高16位数
ori 存基址的寄存器, 存基址的寄存器, 基址的低16位数
# 以上两行指令用于将32位的地址存入寄存器
lw 用于存放读取的元素的寄存器, 数组下标数字(存基址的寄存器)

如果访问数组时要对数组元素进行修改,就对存放元素的寄存器中的数据进行处理,最后再使用sw指令将修改后的元素存到原来的位置。

字符数组

与一般的数组不同,字符数组以字节为单位存储。每个元素存放在一个字节(8位)大小的空间里,采用ASCII码编码。
对字符数组读取写入时,不用lw与sw指令,用无符号字节读取指令lbu,字节读取指令lb和字节写入指令sb指令。
无符号字节读取指令lbu对字节进行高位补0后存入32位寄存器。
字节读取指令lb对字节高位进行符号补位之后存入32位寄存器。
字节写入指令sb会将32位寄存器中的高位舍去,把低位存入字节中。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lcandlyx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值