gpt4 book ai didi

c - C代码转换为MIPS-数组

转载 作者:行者123 更新时间:2023-11-30 19:30:51 25 4
gpt4 key购买 nike

我刚刚开始学习所有这些计算机科学知识。我发现困难的一件事是在给定包含数组的C代码行时编写MIPS指令。我了解堆栈指针以及内存的工作原理(一定程度上),但是我想确保自己做对了。问题是


  A [2] = A [0] $ s0保持A的基地址。


我只对使用i而不是整数的数组进行过练习,所以这对我来说有点奇怪。偏移量为2的lw命令然后是将其存储到sw中的array[0]命令是否可以工作?如果有人可以帮助我确定命令顺序,我将不胜感激。

最佳答案

实际写出问题的操作码可能更好,但是没有。

C具有丰富的类型系统,因此访问int数组的第N个元素将是A + sizeof(int)* N的负载。您很可能是mips32,因此A [2]将是A + 2 * 4。
[回复评论]
仅当数组是自动数组时,堆栈才起作用,例如:

int t(void) {
int A[7];
A[0] = A[2];
...
}


与以下内容完全不同:

int A[7];
int t(void) {
A[0] = A[2];
...
}


在第一种情况下,必须在调用函数时相对于堆栈指针计算A的地址。
在第二种情况下,A具有由链接程序分配的固定地址。不要编译“共享”,这会增加混乱而没有实质内容。

遵循任何约定,您可能希望坚持使用temp $ t [0..7]寄存器进行操作。
祝好运!

关于c - C代码转换为MIPS-数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49991058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com