SO用户,
我希望有人可以分享他们关于如何解决这个问题的想法。可以说,我有一个值表。该表包含两列,第一列 (COL1) 具有与之关联的特定值,第二列 (COL2) 具有另一个值:
这些值都是十六进制的
COL1 COL2
0 11
1 90
2 52
3 C8
4 B7
现在,我要做的是,比较其中一个寄存器中的值,如果它与 COL1 中的任何值匹配,我必须使用来自 COL2 的相应值加载另一个寄存器。例如,如果我有一个值,比如 R2 = 1,我将不得不用 90 加载 R3。
我使用的方法涉及完全避免lb
指令(我的目标);
and $r1, $r1, $r0 #Initialise r1 to 0
addi $r1, $r1, 1 #load r1 with 1
beq $r2, $r1, LOAD_1 #Check to see if r2 = 1
and $r1, $r1, $r0
addi $r1, $r1, 2
beq $r2, $r1, LOAD_2
LOAD_1:
and $r3, $r3, $zero
addi $r3, $r3, 0x52 #Load r3 with 0x52 as per the table
LOAD_2:
Load value into r3 as before.
问题是,如果我有一张大桌子,它会变得非常长。如果存在一种方法(使用lb
操作员),有人可以建议一种更短的方法吗?