我正在尝试在MIPS中编写一个简单的函数,它将字符串复制到第二个参数中指定的地址。第一个参数是要复制的字符串的地址。我写了这个:
.globl strcpy
strcpy:
lb $t0 ($a0)
beqz $t0 out
sb $a0 ($a1)
addi $a0 $a0 1
addi $a1 $a1 1
j strcpy
out: jr $ra
但是我得到了意想不到的结果,我看不出我做错了什么。
答案 0 :(得分:0)
您需要sb $a0 ($a1)
,而不是sb $t0 ($a1)
,因为您加载了字节。
您也从函数返回而没有空字符串终止。如果你期望一个C字符串函数来处理结果,你会感到失望。如果该函数应该是C strcpy()
的实现,那么您也会返回错误的值。