对于MIPS,asm中的“表”是什么

时间:2014-02-22 23:44:44

标签: assembly mips

我正在学习MIPS和做一些我在网上找到的项目。一个这样的项目要求创建一个表来存储信息。这个想法是生成随机机器指令,如bne,add,adii,以及与它们相关的正确值。该项目表示该表应该命名为optable,或者每个操作码我应该在表中有名称,操作码,功能和类型。我的问题是,桌子是什么意思?我不熟悉asm中的表格,当我在google上搜索时,我找不到任何对表格的引用。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

单词表格有些含糊不清。它可能意味着一个哈希表,但它是一个开始汇编教程的上下文,它们可能意味着一个数组。

要声明数组“或者更确切地为数组保留空间”,请使用带有要保留的字节数的参数的space指令。

为此,您需要考虑每个条目需要多少空间。

  • 操作码:6位 - 将其存储在单个字节中
  • 功能:6位 - 将其存储在一个字节中
  • type:R,I或J - 将其作为字符'R','I'或'J'存储在单个字节中。
  • name:指令的ASCII表示。我查看了一个列表here,看起来最长的MIPS指令名是ROUND.W.fmt,它带有一个尾随的空终止符,出现12个字符,但为了安全起见,我们为每个名称分配16个字节。 / LI>

因此,表中每个条目需要19个字节。

所以要分配一个表来存储让我们说20个这样的条目你需要380个字节:

.data

optable: .space 380

要在代码中使用表,首先使用la加载基址,然后在19*(entry number) + byte-offset中编制索引。例如。对于操作码,这是19*(entry number),对于名称,它是19*(entry number) + 3

E.g。

.text

main:
    la $t0 optable
    sb $t1 0($t0) # store $t1 as opcode of first entry
    sb $t1 1($t0) # store $t1 as funct of first entry
    sb $t1 2($t0) # store $t1 as type of first entry
    sb $t1 3($t0) # store $t1 as first letter of name of first entry
    jr $ra 
相关问题