【问题标题】:Strncpy in MIPS has a weird behaviorMIPS 中的 Strncpy 有一个奇怪的行为
【发布时间】:2015-10-08 16:27:20
【问题描述】:

这是我的 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

【问题讨论】:

标签: mips strncpy


【解决方案1】:

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

addi $a3 $a0 0

strncpy:
(...)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    • 2012-06-14
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-23
    相关资源
    最近更新 更多