Ir al contenido principal

Investigación I - Generar código MIPS a cada expresión en cascada.

Como primer paso en este tercer proyecto al tener estructuras que manejan cada tipo de declaración y otras cosas que componen la gramática del lenguaje que hemos creado, nos dimos cuenta que estas estructuras tienen el propósito de ayudar para realizar el análisis sintáctico y semántico pero se analizo que estas estructuras podrían pasar por un algoritmo que va generando en forma de cascada el código respectivo en MIPS.
Los pasos que se tiene pensando hacer en este algoritmo sería:

  • Almacenar los tokens que componen cada tipo de expresión, luego lo que compone el bloque y de final las funciones.
  • Al tener en estructura los tokens sería ir en forma de cascada generando el código MIPS para cada estructura que se almaceno.
  • Al finalizar, sería escribir el código en archivo de extensión .s 
Por el momento, se ha hecho dos reuniones para realizar un pseudocódigo del algoritmo. Se tiene una idea clara gracias al realizar el documento de requerimientos.

Comentarios

Entradas más populares de este blog

Prueba de códigos básicos

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,...

Pruebas de condicionales

Se realizaron pruebas de diferentes ejemplos para expresiones condicionales. Se analizaron cuales son los procesos que deben ser ejecutados para las expresiones condicionales en asignaciones booleanas que podrán ser utilizadas en las diferentes estructuras de control, ejemplo; for, while, if.

Investigación de condicionales

Hasta el momento se ha avanzado en el proyecto y se ha llegado la punto donde se logra generar funciones, asignaciones complejas, llamadas de funciones y varios tipos de expresiones. Al tener expresiones y la mayoría de la gramática se requiere saber como lograr hacer condiciones en MIPS, ya que es sumamente   importante para darle sentido a la funcionalidad de los códigos que se ingresan en el compilador. Gracias a la tarea II y actividad #5 del curso, se tiene un resumen sobre el comportamiento de las condiciones en MIPS, y se logro llegar a una idea sobre lo que se necesita estructurar en el código Back-End para lograr que se genere las condiciones que aparezcan en el código fuente.