SlideShare una empresa de Scribd logo
1 de 2
Descargar para leer sin conexión
Universidad Tecnológica Centroamericana
Ingeniería en Sistemas Computacionales
Compiladores I
Prof. Egdares Futch H.

                               Ejemplo de codificación MIPS
/* Fibonacci:*/                 .text
                                # --------- Funcion -----------
int fib(int n)                  _fib:                          # Label de la Funcion
{                               # ---------- Inicio Establecer Stack Frame:
  if (n<2)                      sub $sp, $sp, 8                # Push Stack Frame
    return n;                   sw $ra, 4($sp)                 # Salva Return Address
  else                          sw $fp, 0($sp)                 # Salva Frame Pointer
   return fib(n-1)+fib(n-2);    add $fp, $sp, -4               # Establece Frame Pointer
}                               # ---------- Fin Establecer Stack Frame
                                lw $t0, 8($sp)                 # Load n local
void main( )                    li $t1, 2                      # Load Constante
{                               slt $t0, $t0, $t1              # Less than '<'
                                beq $t0, 0, __Label0           # Inicio If-then-else #0
printfint(fib(scanfint()));     lw $t0, 8($sp)                 # Load n local
}                               move $v0, $t0                  # Asigna Valor de Retorno
                                # ---------- Inicio Quitar Stack Frame por el Return
                                lw $fp, 0($sp)                 # Load Frame Pointer
                                lw $ra, 4($sp)                 # Load Return Address
                                add $sp, $sp, 8                # Pop Stack Frame
                                jr $ra                         # Return
                                # ---------- Fin Quitar Stack Frame por Return
                                j __Label1                     # Salta despues del If-then-
                                else
                                __Label0:                      # Parte Else del If-then-else
                                #0
                                lw $t0, 8($sp)                 # Load n local
                                li $t1, 1                      # Load Constante
                                sub $t0, $t0, $t1              # Resta '-'
                                sw $t0, -4($sp)                # Argumento
                                sub $sp, $sp, 4                # Inicio Llamada a funcion
                                jal _fib                       #
                                add $sp, $sp, 4                #
                                move $t0, $v0                  # Copia Valor de Retorno
                                sw $t0, -4($sp)                # Guarda Temporal
                                lw $t1, 8($sp)                 # Load n local
                                li $t2, 2                      # Load Constante
                                sub $t1, $t1, $t2              # Resta '-'
                                sw $t1, -8($sp)                # Argumento
                                sub $sp, $sp, 8                # Inicio Llamada a funcion
                                jal _fib                       #
                                add $sp, $sp, 8                #
                                lw $t0, -4($sp)                # Lee Temporal
                                move $t1, $v0                  # Copia Valor de Retorno
                                add $t0, $t0, $t1              # Suma '+'
                                move $v0, $t0                  # Asigna Valor de Retorno
                                # ---------- Inicio Quitar Stack Frame por el Return
                                lw $fp, 0($sp)                 # Load Frame Pointer
                                lw $ra, 4($sp)                 # Load Return Address
                                add $sp, $sp, 8                # Pop Stack Frame
                                jr $ra                         # Return
                                # ---------- Fin Quitar Stack Frame por Return
                                __Label1:                      # Fin del If-then-else #0
                                # ---------- Inicio Quitar Stack Frame
                                lw $fp, 0($sp)                 # Load Frame Pointer
                                lw $ra, 4($sp)                 # Load Return Address
                                add $sp, $sp, 8                # Pop Stack Frame
                                # ---------- Fin Quitar Stack Frame
                                jr $ra                         # Return
                                # --------- Fin de Funcion -----------

                                .text
                                # --------- Funcion -----------
                                main:                          # Label de la Funcion
                                # ---------- Inicio Establecer Stack Frame:
                                sub $sp, $sp, 8                # Push Stack Frame
                                sw $ra, 4($sp)                 # Salva Return Address
                                sw $fp, 0($sp)                 # Salva Frame Pointer
                                add $fp, $sp, -4               # Establece Frame Pointer
# ---------- Fin Establecer Stack Frame
li $v0, 5                      # System Call Code (read_int)
syscall                        # read_int
move $t0, $v0                  # Copia $v0
sw $t0, -4($sp)                # Argumento
sub $sp, $sp, 4                # Inicio Llamada a funcion
jal _fib                       #
add $sp, $sp, 4                #
move $t0, $v0                  # Copia Valor de Retorno
# ---------- Inicio de PrintfInt():
li $v0, 1                      # System Call Code
(Print_int)
move $a0, $t0                  # Argumento a imprimir
syscall                        # Print_int
# ---------- Fin de PrintfInt()
# ---------- Inicio Quitar Stack Frame
lw $fp, 0($sp)                 # Load Frame Pointer
lw $ra, 4($sp)                 # Load Return Address
add $sp, $sp, 8                # Pop Stack Frame
# ---------- Fin Quitar Stack Frame
li $v0, 10                     # System Call Code para Exit
syscall                        # Salir del Programa
.end main                      # Fin del Programa
# --------- Fin de Funcion -----------

Más contenido relacionado

Más de Egdares Futch H.

El "Internet de Todo" (IoT)
El "Internet de Todo" (IoT)El "Internet de Todo" (IoT)
El "Internet de Todo" (IoT)Egdares Futch H.
 
El “Internet de Todo” (IoT) y lo que lo hace posible
El “Internet de Todo” (IoT) y lo que lo hace posible El “Internet de Todo” (IoT) y lo que lo hace posible
El “Internet de Todo” (IoT) y lo que lo hace posible Egdares Futch H.
 
MGTI: Tendencias de Tecnología 2015 - Campus Tegucigalpa
MGTI: Tendencias de Tecnología 2015 - Campus TegucigalpaMGTI: Tendencias de Tecnología 2015 - Campus Tegucigalpa
MGTI: Tendencias de Tecnología 2015 - Campus TegucigalpaEgdares Futch H.
 
MGTI: Tendencias de Tecnología 2015 y su aplicación en el país Campus La Ceiba
MGTI: Tendencias de Tecnología 2015 y su aplicación en el país Campus La CeibaMGTI: Tendencias de Tecnología 2015 y su aplicación en el país Campus La Ceiba
MGTI: Tendencias de Tecnología 2015 y su aplicación en el país Campus La CeibaEgdares Futch H.
 
Introducción a la Teoría de Juegos con aplicación a las Ciencias de la Comput...
Introducción a la Teoría de Juegos con aplicación a las Ciencias de la Comput...Introducción a la Teoría de Juegos con aplicación a las Ciencias de la Comput...
Introducción a la Teoría de Juegos con aplicación a las Ciencias de la Comput...Egdares Futch H.
 
The Hour of Code - Presentación Diciembre 2014
The Hour of Code - Presentación Diciembre 2014The Hour of Code - Presentación Diciembre 2014
The Hour of Code - Presentación Diciembre 2014Egdares Futch H.
 
Criptografía para las masas
Criptografía para las masasCriptografía para las masas
Criptografía para las masasEgdares Futch H.
 
Más sobre el Algoritmo de Peterson
Más sobre el Algoritmo de PetersonMás sobre el Algoritmo de Peterson
Más sobre el Algoritmo de PetersonEgdares Futch H.
 
Análisis de ataques a un sistema de correo electrónico por medio de mensajes ...
Análisis de ataques a un sistema de correo electrónico por medio de mensajes ...Análisis de ataques a un sistema de correo electrónico por medio de mensajes ...
Análisis de ataques a un sistema de correo electrónico por medio de mensajes ...Egdares Futch H.
 
Apuntes de clase Sistemas Operativos: Administración de Memoria
Apuntes de clase Sistemas Operativos: Administración de MemoriaApuntes de clase Sistemas Operativos: Administración de Memoria
Apuntes de clase Sistemas Operativos: Administración de MemoriaEgdares Futch H.
 
FIT GT - Build your own private cloud
FIT GT - Build your own private cloudFIT GT - Build your own private cloud
FIT GT - Build your own private cloudEgdares Futch H.
 
Analizador sintáctico de Pascal escrito en Bison
Analizador sintáctico de Pascal escrito en BisonAnalizador sintáctico de Pascal escrito en Bison
Analizador sintáctico de Pascal escrito en BisonEgdares Futch H.
 
Ejemplo completo de integración JLex y CUP
Ejemplo completo de integración JLex y CUPEjemplo completo de integración JLex y CUP
Ejemplo completo de integración JLex y CUPEgdares Futch H.
 

Más de Egdares Futch H. (20)

El "Internet de Todo" (IoT)
El "Internet de Todo" (IoT)El "Internet de Todo" (IoT)
El "Internet de Todo" (IoT)
 
BPMS vs. workflow
BPMS vs. workflowBPMS vs. workflow
BPMS vs. workflow
 
El “Internet de Todo” (IoT) y lo que lo hace posible
El “Internet de Todo” (IoT) y lo que lo hace posible El “Internet de Todo” (IoT) y lo que lo hace posible
El “Internet de Todo” (IoT) y lo que lo hace posible
 
MGTI: Tendencias de Tecnología 2015 - Campus Tegucigalpa
MGTI: Tendencias de Tecnología 2015 - Campus TegucigalpaMGTI: Tendencias de Tecnología 2015 - Campus Tegucigalpa
MGTI: Tendencias de Tecnología 2015 - Campus Tegucigalpa
 
MGTI: Tendencias de Tecnología 2015 y su aplicación en el país Campus La Ceiba
MGTI: Tendencias de Tecnología 2015 y su aplicación en el país Campus La CeibaMGTI: Tendencias de Tecnología 2015 y su aplicación en el país Campus La Ceiba
MGTI: Tendencias de Tecnología 2015 y su aplicación en el país Campus La Ceiba
 
Introducción a la Teoría de Juegos con aplicación a las Ciencias de la Comput...
Introducción a la Teoría de Juegos con aplicación a las Ciencias de la Comput...Introducción a la Teoría de Juegos con aplicación a las Ciencias de la Comput...
Introducción a la Teoría de Juegos con aplicación a las Ciencias de la Comput...
 
The Hour of Code - Presentación Diciembre 2014
The Hour of Code - Presentación Diciembre 2014The Hour of Code - Presentación Diciembre 2014
The Hour of Code - Presentación Diciembre 2014
 
Unitec virtualización
Unitec   virtualizaciónUnitec   virtualización
Unitec virtualización
 
Criptografía para las masas
Criptografía para las masasCriptografía para las masas
Criptografía para las masas
 
Más sobre el Algoritmo de Peterson
Más sobre el Algoritmo de PetersonMás sobre el Algoritmo de Peterson
Más sobre el Algoritmo de Peterson
 
Análisis de ataques a un sistema de correo electrónico por medio de mensajes ...
Análisis de ataques a un sistema de correo electrónico por medio de mensajes ...Análisis de ataques a un sistema de correo electrónico por medio de mensajes ...
Análisis de ataques a un sistema de correo electrónico por medio de mensajes ...
 
Apuntes de clase Sistemas Operativos: Administración de Memoria
Apuntes de clase Sistemas Operativos: Administración de MemoriaApuntes de clase Sistemas Operativos: Administración de Memoria
Apuntes de clase Sistemas Operativos: Administración de Memoria
 
Memoria virtual
Memoria virtualMemoria virtual
Memoria virtual
 
Deadlocks
DeadlocksDeadlocks
Deadlocks
 
Concurrencia
ConcurrenciaConcurrencia
Concurrencia
 
Proyecto final progra 1
Proyecto final progra 1Proyecto final progra 1
Proyecto final progra 1
 
FIT GT - Build your own private cloud
FIT GT - Build your own private cloudFIT GT - Build your own private cloud
FIT GT - Build your own private cloud
 
Analizador sintáctico de Pascal escrito en Bison
Analizador sintáctico de Pascal escrito en BisonAnalizador sintáctico de Pascal escrito en Bison
Analizador sintáctico de Pascal escrito en Bison
 
Ejemplo completo de integración JLex y CUP
Ejemplo completo de integración JLex y CUPEjemplo completo de integración JLex y CUP
Ejemplo completo de integración JLex y CUP
 
Ejemplo básico de CUP
Ejemplo básico de CUPEjemplo básico de CUP
Ejemplo básico de CUP
 

Último

Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Katherine Concepcion Gonzalez
 
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJOACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJOBRIGIDATELLOLEONARDO
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptAlberto Rubio
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024IES Vicent Andres Estelles
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...JAVIER SOLIS NOYOLA
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfFrancisco158360
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptxRigoTito
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxiemerc2024
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxFernando Solis
 
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdfMiguelHuaman31
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
Abril 2024 - Maestra Jardinera Ediba.pdf
Abril 2024 -  Maestra Jardinera Ediba.pdfAbril 2024 -  Maestra Jardinera Ediba.pdf
Abril 2024 - Maestra Jardinera Ediba.pdfValeriaCorrea29
 
Infografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfInfografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfAlfaresbilingual
 
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONALMiNeyi1
 

Último (20)

Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
 
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJOACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
Supuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docxSupuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docx
 
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
Abril 2024 - Maestra Jardinera Ediba.pdf
Abril 2024 -  Maestra Jardinera Ediba.pdfAbril 2024 -  Maestra Jardinera Ediba.pdf
Abril 2024 - Maestra Jardinera Ediba.pdf
 
Infografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfInfografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdf
 
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
 

Generación de código objeto MIPS

  • 1. Universidad Tecnológica Centroamericana Ingeniería en Sistemas Computacionales Compiladores I Prof. Egdares Futch H. Ejemplo de codificación MIPS /* Fibonacci:*/ .text # --------- Funcion ----------- int fib(int n) _fib: # Label de la Funcion { # ---------- Inicio Establecer Stack Frame: if (n<2) sub $sp, $sp, 8 # Push Stack Frame return n; sw $ra, 4($sp) # Salva Return Address else sw $fp, 0($sp) # Salva Frame Pointer return fib(n-1)+fib(n-2); add $fp, $sp, -4 # Establece Frame Pointer } # ---------- Fin Establecer Stack Frame lw $t0, 8($sp) # Load n local void main( ) li $t1, 2 # Load Constante { slt $t0, $t0, $t1 # Less than '<' beq $t0, 0, __Label0 # Inicio If-then-else #0 printfint(fib(scanfint())); lw $t0, 8($sp) # Load n local } move $v0, $t0 # Asigna Valor de Retorno # ---------- Inicio Quitar Stack Frame por el Return lw $fp, 0($sp) # Load Frame Pointer lw $ra, 4($sp) # Load Return Address add $sp, $sp, 8 # Pop Stack Frame jr $ra # Return # ---------- Fin Quitar Stack Frame por Return j __Label1 # Salta despues del If-then- else __Label0: # Parte Else del If-then-else #0 lw $t0, 8($sp) # Load n local li $t1, 1 # Load Constante sub $t0, $t0, $t1 # Resta '-' sw $t0, -4($sp) # Argumento sub $sp, $sp, 4 # Inicio Llamada a funcion jal _fib # add $sp, $sp, 4 # move $t0, $v0 # Copia Valor de Retorno sw $t0, -4($sp) # Guarda Temporal lw $t1, 8($sp) # Load n local li $t2, 2 # Load Constante sub $t1, $t1, $t2 # Resta '-' sw $t1, -8($sp) # Argumento sub $sp, $sp, 8 # Inicio Llamada a funcion jal _fib # add $sp, $sp, 8 # lw $t0, -4($sp) # Lee Temporal move $t1, $v0 # Copia Valor de Retorno add $t0, $t0, $t1 # Suma '+' move $v0, $t0 # Asigna Valor de Retorno # ---------- Inicio Quitar Stack Frame por el Return lw $fp, 0($sp) # Load Frame Pointer lw $ra, 4($sp) # Load Return Address add $sp, $sp, 8 # Pop Stack Frame jr $ra # Return # ---------- Fin Quitar Stack Frame por Return __Label1: # Fin del If-then-else #0 # ---------- Inicio Quitar Stack Frame lw $fp, 0($sp) # Load Frame Pointer lw $ra, 4($sp) # Load Return Address add $sp, $sp, 8 # Pop Stack Frame # ---------- Fin Quitar Stack Frame jr $ra # Return # --------- Fin de Funcion ----------- .text # --------- Funcion ----------- main: # Label de la Funcion # ---------- Inicio Establecer Stack Frame: sub $sp, $sp, 8 # Push Stack Frame sw $ra, 4($sp) # Salva Return Address sw $fp, 0($sp) # Salva Frame Pointer add $fp, $sp, -4 # Establece Frame Pointer
  • 2. # ---------- Fin Establecer Stack Frame li $v0, 5 # System Call Code (read_int) syscall # read_int move $t0, $v0 # Copia $v0 sw $t0, -4($sp) # Argumento sub $sp, $sp, 4 # Inicio Llamada a funcion jal _fib # add $sp, $sp, 4 # move $t0, $v0 # Copia Valor de Retorno # ---------- Inicio de PrintfInt(): li $v0, 1 # System Call Code (Print_int) move $a0, $t0 # Argumento a imprimir syscall # Print_int # ---------- Fin de PrintfInt() # ---------- Inicio Quitar Stack Frame lw $fp, 0($sp) # Load Frame Pointer lw $ra, 4($sp) # Load Return Address add $sp, $sp, 8 # Pop Stack Frame # ---------- Fin Quitar Stack Frame li $v0, 10 # System Call Code para Exit syscall # Salir del Programa .end main # Fin del Programa # --------- Fin de Funcion -----------