在函数中,给定的参数包含参数块。在该参数块中,前两个部分包含单独的字符串,第三个部分将存储组合的字符串。如何确定参数块各部分的地址位置?
答案 0 :(得分:0)
执行索引编制或间接寻址。
这是一个例子:
.data
.align 2
problem1:
.word str_a1 # First number
.word str_a2 # Second number
.word buf_a # Place to store the result
.word 1 # Length of both numbers and result buf
.word out_a # Where to start printing the answer
.text
...
la $a0,problem # Address of parameters for
jal print_label # problem 1, and do it.
print_label:
...
move $s0, $a0 # copy the loc of the parm block to s0
li $v0, 4 # print 1st number
lw $a0, 0($s0)
syscall
li $v0, 4 # print 2nd number
lw $a0, 4($s0) # Indexing!
syscall
li $v0, 4 # print newline at end
la $a0, result3
syscall
标签表示形式无关。本质上,将$ a0的内容复制到$ s0中并通过索引进行访问。如果要增加其“指针”,则将是间接位移。
执行任何操作,然后将它们保存在参数块$ a0中的位移位置,然后如标签问题1所示读出。