MIPS和汇编查找参数块的各个部分

时间:2016-02-29 17:46:46

标签: debugging assembly mips

在函数中,给定的参数包含参数块。在该参数块中,前两个部分包含单独的字符串,第三个部分将存储组合的字符串。如何确定参数块各部分的地址位置?

1 个答案:

答案 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所示读出。