【问题标题】:Writing a function in MIPS with global variables?在 MIPS 中使用全局变量编写函数?
【发布时间】:2012-05-09 05:32:40
【问题描述】:
frogger:
    jal teechar
    jal update_frog
    lw $t0,game_indicator
    li $t0, 0

好的,这就是函数。我有 teechar 和 update_frog 函数完全编写和工作。我了解前两个项目符号,但不确定后两个项目符号。我将如何在 MIPS 中编写最后两个项目符号?

这里是功能说明:

编写一个不带参数的 MIPS 函数 frogger,并返回一个字符(使 测试更容易)。它执行以下操作:

  • 调用 teechar 来读取并回显字符 c。
  • 致电您的 update_frog(c)。
  • 如果 c 不为零,则将 c 存储在全局变量中以指示游戏结束,以及如何结束 结束了。 (当然,您必须将该全局变量初始化为零。)
  • 返回 c.

这是我的代码:

frogger:
    jal teechar
    jal update_frog

对不起,我只是在思考如何做到这一点时遇到了麻烦:(

【问题讨论】:

  • 你特别坚持什么?你知道如何将值存储到某个位置吗?
  • 我卡在最后两个子弹上。是的,我不确定如何存储 c 的值
  • 我无法相信您还没有找到任何详细说明如何将值存储到内存位置的资源:在 Google 上 30 秒,我找到了 this。这是否有助于您朝着正确的方向前进?你的班级没有任何教学材料、助教、其他学生、讲座、讲义或任何东西吗?
  • 我一直在寻找,但我的意思是我只需要在数据部分下放一个标签,这被认为是一个全局变量吗?我是否需要加载任何内容,因为我调用了 update frog,但我实际上如何从函数中获取 c 呢?是的,我确实去上课,但助教和教授并没有帮助....而且我不是班上唯一这么想的人

标签: assembly global-variables mips mips32


【解决方案1】:

为了一个全局变量,要么你必须传递参数,要么使用一个特殊用途的寄存器。由于您已指定该函数不接受任何参数,因此您必须保留一个寄存器来保存 c 的值,每当调用 frogger 时,它将从该寄存器中读取值。

它不是来自高级编程语言的干净解决方案,但您现在正在汇编中,不妨亲自动手!

【讨论】:

    猜你喜欢
    • 2022-01-16
    相关资源
    最近更新 更多