A continuación se muestra un código básico del lenguaje:
string salto = "\n"@
int Edad = 5@
bool FuncionBool(bool b)
{
return b@
}
real FuncionReal(real r)
{
return r+1.0@
}
int FuncionInt(int i)
{
return i+1@
}
string FuncionString(string s)
{
return s@
}
char FuncionChar(char c)
{
return c@
}
int main()
{
char c@
c = FuncionChar('I')@
print(c)@
print(salto)@
string s@
s = FuncionString("Hola Nahum")@
print(s)@
print(salto)@
int i@
i = FuncionInt(1)@
print(i)@
print(salto)@
real r@
r = FuncionReal(1.1)@
print(r)@
print(salto)@
bool b@
b = FuncionBool(True)@
print(b)@
}
Seguidamente de su traducción al lenguaje MIPS
.data
true: .asciiz "print true"
false: .asciiz "print false"
Et0: .asciiz "\n"
Et1: .asciiz "Hola Nahum"
.text
.globl main
print_true:
li $v0,4
la $a0, true
syscall
jr $ra
print_false:
li $v0,4
la $a0, false
syscall
jr $ra
print_bool:
li $t0 ,0
beq $t1, $t0, print_true
li $t0 ,1
beq $t1, $t0, print_false
jr $ra
print_int:
li $v0,1
move $a0, $a1
syscall
jr $ra
print_real:
li $v0,2
mov.s $f12, $f1
syscall
jr $ra
print_string:
li $v0,4
move $a0, $a1
syscall
jr $ra
print_char:
li $v0,11
move $a0, $a1
syscall
jr $ra
end_program:
li $v0,10
syscall
globales:
addi $sp, $sp, -8
la $t1, Et0
sw $t1, 0($sp)
li $t1, 5
sw $t1, 4($sp)
jr $ra
main:
jal globales
addi $sp, $sp, -20
addi $sp, $sp, -8
li $t1,'I'
sw $t1, 0($sp)
jal FuncionChar
lw $a2, 0($sp)
addi $sp, $sp, 4
sw $a2, 0($sp)
lw $t1,0($sp)
move $a1, $t1
jal print_char
lw $t1,20($sp)
move $a1, $t1
jal print_string
addi $sp, $sp, -8
la $t1, Et1
sw $t1, 0($sp)
jal FuncionString
lw $a2, 0($sp)
addi $sp, $sp, 4
sw $a2, 4($sp)
lw $t1,4($sp)
move $a1, $t1
jal print_string
lw $t1,20($sp)
move $a1, $t1
jal print_string
addi $sp, $sp, -8
li $t1, 1
sw $t1, 0($sp)
jal FuncionInt
lw $a2, 0($sp)
addi $sp, $sp, 4
sw $a2, 8($sp)
lw $t1, 8($sp)
move $a1, $t1
jal print_int
lw $t1,20($sp)
move $a1, $t1
jal print_string
addi $sp, $sp, -8
li.s $f1, 1.1
swc1 $f1, 0($sp)
jal FuncionReal
lwc1 $f0, 0($sp)
addi $sp, $sp, 4
swc1 $f0, 12($sp)
lwc1 $f1,12($sp)
mov.s $f1, $f1
jal print_real
lw $t1,20($sp)
move $a1, $t1
jal print_string
addi $sp, $sp, -8
li $t1, 0
sw $t1, 0($sp)
jal FuncionBool
lw $a3, 0($sp)
addi $sp, $sp, 4
sw $a3, 16($sp)
lw $t1,16($sp)
move $t1, $t1
jal print_bool
addi $sp, $sp, 20
j end_program
FuncionChar:
sw $ra, 4($sp)
addi $sp, $sp, 0
lw $t1,0($sp)
move $v0, $t1
addi $sp, $sp, 0
addi $sp, $sp, 4
lw $ra, 0($sp)
sw $v0, 0($sp)
jr $ra
FuncionString:
sw $ra, 4($sp)
addi $sp, $sp, 0
lw $t2,0($sp)
move $v0, $t2
addi $sp, $sp, 0
addi $sp, $sp, 4
lw $ra, 0($sp)
sw $v0, 0($sp)
jr $ra
FuncionInt:
sw $ra, 4($sp)
addi $sp, $sp, 0
lw $t3, 0($sp)
li $t4, 1
add $t3, $t3, $t4
move $v0, $t3
addi $sp, $sp, 0
addi $sp, $sp, 4
lw $ra, 0($sp)
sw $v0, 0($sp)
jr $ra
FuncionReal:
sw $ra, 4($sp)
addi $sp, $sp, 0
lwc1 $f4,0($sp)
li.s $f5, 1.0
add.s $f4, $f4, $f5
mov.s $f0, $f4
addi $sp, $sp, 0
addi $sp, $sp, 4
lw $ra, 0($sp)
swc1 $f0, 0($sp)
jr $ra
FuncionBool:
sw $ra, 4($sp)
addi $sp, $sp, 0
lw $t5,0($sp)
move $v0, $t5
addi $sp, $sp, 0
addi $sp, $sp, 4
lw $ra, 0($sp)
sw $v0, 0($sp)
jr $ra
string salto = "\n"@
int Edad = 5@
bool FuncionBool(bool b)
{
return b@
}
real FuncionReal(real r)
{
return r+1.0@
}
int FuncionInt(int i)
{
return i+1@
}
string FuncionString(string s)
{
return s@
}
char FuncionChar(char c)
{
return c@
}
int main()
{
char c@
c = FuncionChar('I')@
print(c)@
print(salto)@
string s@
s = FuncionString("Hola Nahum")@
print(s)@
print(salto)@
int i@
i = FuncionInt(1)@
print(i)@
print(salto)@
real r@
r = FuncionReal(1.1)@
print(r)@
print(salto)@
bool b@
b = FuncionBool(True)@
print(b)@
}
Seguidamente de su traducción al lenguaje MIPS
.data
true: .asciiz "print true"
false: .asciiz "print false"
Et0: .asciiz "\n"
Et1: .asciiz "Hola Nahum"
.text
.globl main
print_true:
li $v0,4
la $a0, true
syscall
jr $ra
print_false:
li $v0,4
la $a0, false
syscall
jr $ra
print_bool:
li $t0 ,0
beq $t1, $t0, print_true
li $t0 ,1
beq $t1, $t0, print_false
jr $ra
print_int:
li $v0,1
move $a0, $a1
syscall
jr $ra
print_real:
li $v0,2
mov.s $f12, $f1
syscall
jr $ra
print_string:
li $v0,4
move $a0, $a1
syscall
jr $ra
print_char:
li $v0,11
move $a0, $a1
syscall
jr $ra
end_program:
li $v0,10
syscall
globales:
addi $sp, $sp, -8
la $t1, Et0
sw $t1, 0($sp)
li $t1, 5
sw $t1, 4($sp)
jr $ra
main:
jal globales
addi $sp, $sp, -20
addi $sp, $sp, -8
li $t1,'I'
sw $t1, 0($sp)
jal FuncionChar
lw $a2, 0($sp)
addi $sp, $sp, 4
sw $a2, 0($sp)
lw $t1,0($sp)
move $a1, $t1
jal print_char
lw $t1,20($sp)
move $a1, $t1
jal print_string
addi $sp, $sp, -8
la $t1, Et1
sw $t1, 0($sp)
jal FuncionString
lw $a2, 0($sp)
addi $sp, $sp, 4
sw $a2, 4($sp)
lw $t1,4($sp)
move $a1, $t1
jal print_string
lw $t1,20($sp)
move $a1, $t1
jal print_string
addi $sp, $sp, -8
li $t1, 1
sw $t1, 0($sp)
jal FuncionInt
lw $a2, 0($sp)
addi $sp, $sp, 4
sw $a2, 8($sp)
lw $t1, 8($sp)
move $a1, $t1
jal print_int
lw $t1,20($sp)
move $a1, $t1
jal print_string
addi $sp, $sp, -8
li.s $f1, 1.1
swc1 $f1, 0($sp)
jal FuncionReal
lwc1 $f0, 0($sp)
addi $sp, $sp, 4
swc1 $f0, 12($sp)
lwc1 $f1,12($sp)
mov.s $f1, $f1
jal print_real
lw $t1,20($sp)
move $a1, $t1
jal print_string
addi $sp, $sp, -8
li $t1, 0
sw $t1, 0($sp)
jal FuncionBool
lw $a3, 0($sp)
addi $sp, $sp, 4
sw $a3, 16($sp)
lw $t1,16($sp)
move $t1, $t1
jal print_bool
addi $sp, $sp, 20
j end_program
FuncionChar:
sw $ra, 4($sp)
addi $sp, $sp, 0
lw $t1,0($sp)
move $v0, $t1
addi $sp, $sp, 0
addi $sp, $sp, 4
lw $ra, 0($sp)
sw $v0, 0($sp)
jr $ra
FuncionString:
sw $ra, 4($sp)
addi $sp, $sp, 0
lw $t2,0($sp)
move $v0, $t2
addi $sp, $sp, 0
addi $sp, $sp, 4
lw $ra, 0($sp)
sw $v0, 0($sp)
jr $ra
FuncionInt:
sw $ra, 4($sp)
addi $sp, $sp, 0
lw $t3, 0($sp)
li $t4, 1
add $t3, $t3, $t4
move $v0, $t3
addi $sp, $sp, 0
addi $sp, $sp, 4
lw $ra, 0($sp)
sw $v0, 0($sp)
jr $ra
FuncionReal:
sw $ra, 4($sp)
addi $sp, $sp, 0
lwc1 $f4,0($sp)
li.s $f5, 1.0
add.s $f4, $f4, $f5
mov.s $f0, $f4
addi $sp, $sp, 0
addi $sp, $sp, 4
lw $ra, 0($sp)
swc1 $f0, 0($sp)
jr $ra
FuncionBool:
sw $ra, 4($sp)
addi $sp, $sp, 0
lw $t5,0($sp)
move $v0, $t5
addi $sp, $sp, 0
addi $sp, $sp, 4
lw $ra, 0($sp)
sw $v0, 0($sp)
jr $ra
Comentarios
Publicar un comentario