mips string copy:spim中的错误

时间:2018-04-07 05:58:13

标签: c assembly mips spim

Q1。在我的班级ppt中,编写了代码,但MIPS代码在SPIM中不起作用。我该如何修改MIPS代码?

Q2。假设x和y的地址分别为100和200,并且i = 10且sp = 500.如何使用该MIPS源代码修改MIPS代码?

// strcpy C代码

void strcpy (char x[], char y[]) 
{ 
    int i;
    i = 0;

  while ((x[i]=y[i])!='\0')
   i += 1; 
}

// strcpy MIPS代码

.data

 Array: .space 10

.text

strcpy:
  addi $sp, $sp, -4
  sw $s0, 0($sp)
  add $s0, $zero, $zero

L1: 
  add $t1, $s0, $a1
  lbu $t2, 0($t1)
  add $t3, $s0, $a0
  sb $t2, 0($t3)
  beq $t2, $zero, L2
  addi $s0, $s0, 1
  j L1

L2:
  lw $s0, 0($sp)
  addi $sp, $sp, 4
  jr $ra

1 个答案:

答案 0 :(得分:0)

你未定义"主要"符号,你应该传递strcpy的参数。

例如:

main:
    la      $a0, str1       # first args
    la      $a1, str2       # second args
    jal     strcpy          # jump and save return address

    li      $v0, 4          # print_string
    add     $a0, $a0, $zero 
    syscall

    li      $v0, 4
    add     $a0, $a1, $zero 
    syscall

    li      $v0, 10          # exit program