我正在尝试将此 C 代码转换为 MIPS 以用于计算机体系结构作业:
mes[] = ["January", "February", "March", ..., "December"];
for(int i==0; i<12; 1++)
{
printf("%d\n", &mes[i]);
return 0;
}
预期结果是:
January
February
March
.
.
.
December
我的问题背后的想法是,我需要在 MIPS 中定义数组,并使用 for 循环迭代以打印一个月的行,并在 i 计数器大于 12 时结束循环。以下是 MIPS 代码 I写到此为止。月份是西班牙语和大部分评论,所以我对此表示歉意,但想法是一样的:
.data
blank: .asciiz "\n"
Enero: .asciiz "Enero"
Febrero: .asciiz "Febrero"
Marzo: .asciiz "Marzo"
Abril: .asciiz "Abril"
Mayo: .asciiz "Mayo"
Junio: .asciiz "Junio"
Julio: .asciiz "Julio"
Agosto: .asciiz "Agosto"
Setiembre: .asciiz "Setiembre"
Octubre: .asciiz "Octubre"
Noviembre: .asciiz "Noviembre"
Diciembre: .asciiz "Diciembre"
mes: .word Enero,
Febrero,
Marzo,
Abril,
Mayo,
Junio,
Julio,
Agosto,
Setiembre,
Octubre,
Noviembre,
Diciembre
.text
addi $t0, $zero, 0 # i=0
addi $t1, $zero, 48
la $t2, mes
# A se mapea en $s0
for:
slt $t3, $t0, $t1
bne $t3, 1, endFor
# Codigo del for
#sll $t2, $t0, 2 # ix4
#add $t2, $s0, 1 # A + ix4
lw $t3, 0($t2) # $t3 = A[i]
# Codigo del for
addi $v0, $zero, 4
add $a0, $zero, $t3
syscall
addi $v0, $zero, 4
la $a0, blank
syscall
addi $t0, $t0, 4 # i = i + 4
j for
endFor:
addi $v0, $zero, 10
syscall
我的代码中可能有很多错误,但我只是到了不知道还能做什么的地步,在此先感谢!! :)