【问题标题】:Assembly .byte array汇编 .byte 数组
【发布时间】:2013-01-06 12:31:26
【问题描述】:

我已经使用

定义了一个字节数组
.data
letters  : .byte 0:26   

我有一些问题: 1)阵列中的第一个单元格是否可供使用,还是用于其他目的? 2) 如何加载数组的第 6 个(例如)单元格?

我考虑过使用:

la $t0, letters  # load the array address to $t0
addi $t0, $t0 , 6  # update $t0 in order to get the 6th cell
lb $t1, $t0        # load byte to $t1

这个方法有效还是我应该用其他方式做?

提前致谢

【问题讨论】:

  • 您的目标处理器架构是什么?请在“程序集”标签旁边添加适当的标签。
  • 仅供参考,.byte 0:26 通常对于 GNU Binutils as 来说不是有效的 GAS 语法。我假设它特定于 MARS 或 SPIM 中的汇编器。

标签: assembly mips gnu-assembler


【解决方案1】:

1) 是的,它可用 2) 就像在 C 中一样,第一个单元格的偏移量为零。 所以这样你实际上会指向第七个单元格。

【讨论】:

  • 谢谢。我想知道,syntex 本身可以吗? @弗拉德克拉斯诺夫
  • 我不知道这种特定的汇编语言。但在 x86 上它看起来很相似。
【解决方案2】:

您的代码几乎是有效的,只是缺少一对用于间接寻址的括号,如下所示:

lb $t1, ($t0) # load byte to $t1

此外,地址可以包含一个常量偏移量,因此在您的情况下,您不必单独添加:

lb $t1, 6($t0) # load byte to $t1

请注意,这只适用于常量。如果您想按另一个寄存器索引,则必须像以前一样进行添加。

弗拉德已经回答了另一部分。

【讨论】:

    猜你喜欢
    • 2011-11-09
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    • 2012-11-12
    • 2021-03-04
    相关资源
    最近更新 更多