【问题标题】:How to allocate memory with number of bytes stored in a register?如何使用存储在寄存器中的字节数分配内存?
【发布时间】:2013-09-29 22:13:48
【问题描述】:

根据用户输入的整数,我设置所需的字节数并将值放入寄存器 $s7。

li $v0,9
lw $a0,$s7      
syscall
#store the memory address of allocated memory

但是,当我尝试使用 MARS 运行代码时,它显示第二行存在语法错误。

我做错了什么,我该如何解决这个问题?我也试过:

li $a0,$s7

更新:我想我已经修好了,我只是需要:

lw $a0,($s7)

MIPS,我恨你。

更新 2:我还有一个问题...如果我尝试使用带有偏移量的 sw 保存,我该怎么做?

sw $a0,$s7($s1)

给我一​​个错误,将 $s7 放在括号中不会让我摆脱这个错误。

【问题讨论】:

    标签: assembly mips system-calls


    【解决方案1】:

    关于更新后的问题:你确定 MIPS 有内存寻址模式,比如$r1($r2)?复习你的教程并检查(除非你使用一些扩展版本的 MIPS,它通常作为实施任务给出,并且通常会导致你在上面描述的强烈感觉)。

    如果没有,因为大多数 RISC 语言不允许这样做,您将不得不寻找另一种方式,更手动,添加 $s1 和 $s7。我可以推荐add吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-21
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-25
      相关资源
      最近更新 更多