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
答案 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