MIPS中的Strncpy有一种奇怪的行为

时间:2015-10-08 16:27:21

标签: mips strncpy

这是我的strncpy代码。理论上它应该可以工作,但是当我在它上面运行测试时它就会产生垃圾。

Arguments:
  $a0 = pointer to destination array
  $a1 = source string
  $a2 = number of characters to copy

返回:目标数组

 strncpy:   
        beqz $a2, out
        lb $t0, 0($a1)      #load byte
        beqz $t0 out 
        subiu $a2, $a2, 1
        sb $t0, 0($a0)
        addiu $a0, $a0, 1
        addiu $a1, $a1, 1
        j strncpy
out:
    lb $0 0($a0)
        move $v0 $a0
        jr $ra

1 个答案:

答案 0 :(得分:0)

目标数组的原始地址($ a0),并在$ a0-> $ v0中的“out:”中加载它。 (在你的版本中,除了上面提到的问题外,你总是得到最后一个插入后面的字符:)

addi $a3 $a0 0

strncpy:
(...)

out:
move $a0 $a3
move $v0 $a0