有没有办法在MIPS中通过自修改创建一个计数器?
Is there any way to create a counter by self-modifying in MIPS?
我想创建一个这样的子程序:
- 第一次调用:return 0
- 第二次调用:return 1
- 第三次调用:return2
- ...
但我们不应该使用寄存器和内存来保存当前号码。我们必须通过更改代码(自修改)来解决这个问题。
有什么办法吗?
这是我找到的解决方案:
# subroutine
nextInt: # return value is in $v0
add $v0,$zero,0
la $t0,nextInt # load subroutine address
lw $t1,0($t0) # load content of address
addi $t1,$t1,1 # change content (increment)
sw $t1,0($t0) # save
jr $ra
我想创建一个这样的子程序:
- 第一次调用:return 0
- 第二次调用:return 1
- 第三次调用:return2
- ...
但我们不应该使用寄存器和内存来保存当前号码。我们必须通过更改代码(自修改)来解决这个问题。 有什么办法吗?
这是我找到的解决方案:
# subroutine
nextInt: # return value is in $v0
add $v0,$zero,0
la $t0,nextInt # load subroutine address
lw $t1,0($t0) # load content of address
addi $t1,$t1,1 # change content (increment)
sw $t1,0($t0) # save
jr $ra