如何在 MIPS 中更新数组?

发布于 2024-10-16 19:34:54 字数 88 浏览 5 评论 0原文

我正在尝试创建一个数组,然后根据需要更新某些单元格的值。据我所知,使用堆栈框架将是最好的方法,但我无法让它工作。有人能指出我正确的方向吗?

谢谢!

I'm trying to make an array, and then update the values of certain cells if needed. From what I know, using the Stack Frame would be the best approach, but I can't get it to work. Anyone able to point me in the right direction?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

晨光如昨 2024-10-23 19:34:54

您应该已经很好地理解了数组操作在 C 等语言中的工作原理。

如果您想将数组放入当前堆栈帧中并在那里对其进行操作(并了解这样做的好处和问题),那么您应该执行以下操作:

  1. 首先,记下堆栈指针寄存器 ($sp) 的当前值。您将使用它作为指向数组开头的指针。将其存储在另一个寄存器中。
  2. 首先将堆栈指针寄存器 ($sp) 增加数组的字节数。这将为您提供足够的工作空间。
  3. 当您想要更新数组时,计算数组开头的地址加上数组索引。例如,要写入或读取元素 5,请将 5 添加到数组的开头,乘以字大小。在 32 位机器上,将其乘以 4。
  4. 使用 sw 指令在数组中的该地址存储一个字,并使用 lw 加载一个字。

You should already have a good understanding of how array manipulation works in a language like C.

If you want to put an array in the current stack frame, and manipulate it there (and understand the benefits and issues of doing so), then you should do the following:

  1. First, take note of the current value of the stack pointer register ($sp). You will use this as the pointer to the start of the array. Store it in another register.
  2. First increment the stack pointer register ($sp) by however many bytes the array is. This will give you enough space to work.
  3. When you want to update the array, compute the address of the start of the array plus the array index. For example, to write or read element 5, add 5 to the start of the array, times the word size. On a 32-bit machine, multiply it by 4.
  4. Use the sw instruction to store a word in the array at that address, and use lw to load a word.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文