【问题标题】:converting C code to MIPS Assembly Language with arrays使用数组将 C 代码转换为 MIPS 汇编语言
【发布时间】:2013-04-08 19:41:11
【问题描述】:

好的,所以我必须将以下 C 代码段转换为 MIPS 程序集。

f = k + A[5]

问题告诉我f存储在寄存器$s3中,k在$s2中,数组A的基地址是$s4。这就是我的回答:

添加 $s3、$s2、$s4

这是正确的吗?我必须对数组中的 5 做任何特别的事情吗?我对 MIPS 很陌生,如果非常感谢,请提供任何帮助。

【问题讨论】:

标签: c arrays assembly mips


【解决方案1】:

你做这个是为了家庭作业吗?如果是这样,您实际上是在编写一个可执行程序还是只是在回答一系列问题?

无论哪种方式是的,您都需要考虑数组中的 5。问题是告诉你$s4 指向数组的基地址,而不是第5 个索引。

提示:A[0] 将与数组的基址位于同一地址。

【讨论】:

  • @wazy 感谢您的提醒。当我搜索重新标记时,我发现什么也没出现,但什么也没找到。是否有针对家庭作业类型问题的新标签,或者这些天是否允许仅仅给出硬件答案?
  • 对于任何感兴趣的人,我在 meta 上找到了 this link。事实上,homework 标签已被弃用。编辑我的回复以更礼貌地询问问题是否是家庭作业,但仍然只是指导正确答案。
【解决方案2】:

试试这个。 (在我的头顶上)。记住每个索引是 * 4。

li $t2, 6            # init 6 to $t2
addi $t2, $t2, $t2   # $t2 * 2
addi $t2, $t2, $t2   # $t2 * 2
addi $t1, $t2, $s4   # A[6 * 4] 
lw $t4, 0($t1)       # load A[6] int $t4
addi $s3, $s2, $t4   # obtain f

【讨论】:

    猜你喜欢
    • 2019-08-03
    • 2013-11-21
    • 2014-08-16
    • 2020-07-28
    • 2016-12-22
    • 2021-08-22
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多