我在尝试弄清楚如何在Mips / Mars架构中实现这一点时遇到了很多麻烦。
我正在制作一艘战舰游戏并将该板存储为可以容纳100个整数的阵列。
我需要循环播放器的数组并将存储在每个“单元格”中的信息转换为图形数据,以便向用户显示电路板。
我的麻烦源于这样一个事实,即向用户显示的字符是基于数组每个单元格中的值。
如果值为0(空) - 打印'[]',如果打印1(猜测并且为空) - '[O]',如果打印2(猜到并打印) - '[X]'。< / p>
因此,当我循环遍历数组中的每个单元格时,我需要检查该值并分支到相应的打印函数。
我的问题是,如果我转移到print语句,我该如何跳回分支语句的位置?
伪代码:
Looping through array, 'ArrayCell' = value at current array location
branch if equal ArrayCell, 0, print empty
branch if equal ArrayCell, 1, print miss
branch if equal ArrayCell, 2, print hit
increment array
print empty:
print then jump back to loop
print miss:
print then jump back to loop
print hit:
print then jump back to loop
如何在打印后跳回分支语句以保留数组中的位置?
非常感谢!
答案 0 :(得分:2)
在increment array
运算符上方以及print empty
,print miss
和print hit
,j
的末尾添加标签。
示例:
Looping through array, 'ArrayCell' = value at current array location
branch if equal ArrayCell, 0, print empty
branch if equal ArrayCell, 1, print miss
branch if equal ArrayCell, 2, print hit
LBL_Increment:
increment array
loop
print empty:
print
j LBL_Increment
print miss:
print
j LBL_Increment
print hit:
print
j LBL_Increment
答案 1 :(得分:2)
你应该真的在使用function calls。
Looping through array, 'ArrayCell' = value at current array location
if equal ArrayCell, 0, JAL empty
if equal ArrayCell, 1, JAL miss
if equal ArrayCell, 2, JAL hit
LBL_Increment:
increment array
loop
empty:
print " "
JR $RA // return to the instruction after the "JAL empty" instruction.
miss:
print "miss"
JR $RA
hit:
print "hit"
JR $RA