Tengo que realizar un programa en lenguaje ensamblador con varias subrutinas y son bastantes líneas de código. Quería saber si conoceís algún compilador que pase de lenguaje C a MIPS, pero que el código resultante sea related a como se escribe el MIPS y no tanto como la compilación estrictamente. Gracias anticipadas
Adjunto el código porque me lanza un error
.knowledge
A: .phrase 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13
B: .phrase -1, -2, -3, -4, -5, -6
M: .phrase 4
N: .phrase 3
P: .phrase 2
C: .area 100 # Entrada de datos
msj1: .asciiz "La matriz C es: "
msj2: .asciiz "n"
msj3 .asciiz " "
.textual content
.globl predominant
predominant: la $s0, A
la $s1, B
la $s2, C
li $t0, 0 # i = 0
lw $t1, M
for1: bgt $t0, $t1, endfor1 # i <= M
li $t2, 0 # j = 0
lw $t3, P
for2: bgt $t2, $t3, endfor2 # j <= P
li $t4, 0 # ok = 0
lw $t5, N
addi $t6, $0, $0
for3: bgt $t4, $t5, endfor3
# Acceder a elemento A[i, k]
mul $t7, $t0, $t5 # $t7 = i * N
addi $t7, $t7, $t4 # $t7 = $t7 + ok = (i * N + Ok)
sll $t7, $t7, 2
addi $t7, $t7, $s0
lw $t8, 0($t7) # Cargar elem A[i, k]
mul $t7, $t4, $t3 # $t7 = ok * P
add $t7, $t4, $t2
sll $t7, $t7, 2
addi $t7, $t7, $s1
lw $t9, 0($t7) # Cargar elem B[k, j]
mul $s3, $t8, $t9 # $s3 = A[i, k] * B[k, j]
addi $t6, $t6, $s3 # $t6 period 0, ahora es $t6 = 0 + A[i, k] + B[k, j]
# (i * P + j) * 4 + dir base de C
endfor3: mul $t7, $t0, $t3 # $t7 = i * P
addi $t7, $t7, t2 # (i * P + j)
sll $t7, $t7, 2 # (i * P + j) * 4
addi $t7, $t7, $s2 # (i * P + j) * 4 + dir base de C
sw $t6, 0($t7)
addi $t2, $t2, 1 # j += 1
j for2
endfor2: addi $t0, $t0, 1 # i += 1
j for1:
endfor1:
addi $sp, $sp, -4
sw $ra, 0($sp)
jal imprimir
lw $ra, 0($sp)
addi $sp, $sp, 4
jr $ra