我正在学习MIPS和做一些我在网上找到的项目。一个这样的项目要求创建一个表来存储信息。这个想法是生成随机机器指令,如bne,add,adii,以及与它们相关的正确值。该项目表示该表应该命名为optable,或者每个操作码我应该在表中有名称,操作码,功能和类型。我的问题是,桌子是什么意思?我不熟悉asm中的表格,当我在google上搜索时,我找不到任何对表格的引用。任何帮助将不胜感激。
答案 0 :(得分:1)
单词表格有些含糊不清。它可能意味着一个哈希表,但它是一个开始汇编教程的上下文,它们可能意味着一个数组。
要声明数组“或者更确切地为数组保留空间”,请使用带有要保留的字节数的参数的space
指令。
为此,您需要考虑每个条目需要多少空间。
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