gpt4 book ai didi

c - 将 MIPS 程序集翻译成 C 语句

转载 作者:太空宇宙 更新时间:2023-11-04 06:35:10 24 4
gpt4 key购买 nike

addi $s7, $s7, -4
add $s7, $s7, $s1
lw $s0, 4($s7)

假设整数变量 i 和 j 在寄存器 $s0 和 $s1 中。假设整数数组 X 的基地址在寄存器 $s7 中。

到目前为止我有这个:

X = X - 4
X = X + j
i = X - 4 + j

这是正确的吗?我不太确定,所以只是在寻找确认。

最佳答案

这是不正确的。请注意,lw 指令从内存中读取一个单词。

在 C 中它看起来像

  //int *x;
x--; // addi $s7, $s7, -4 decrements pointer to x one element
x = (int*)((char*)x + j); // add $s7, $s7, $s1 increments the address pointed by x j elements
i = *(x+1); // lw $s0, 4($s7) reads the next element pointed by x

OP 评论后的附录:

如果 j = $s7 是 4 的倍数(注意每个整数占 4 个字节),那么它可以用 C 重写为 i = x[j/4].

关于c - 将 MIPS 程序集翻译成 C 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15772883/

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