GithubHelp home page GithubHelp logo

compilador's Introduction

**** INTRUCCIONES PARA EL CORRECTO USO DEL COMPILADOR C-TDS-PCR ****

Compilación del código fuente del compilador

Para compilar el Compilador C-TDS-PCR dispone de un script en /compilador/src/main/ llamado compileC-TDS-PCR.sh. 
Ejecutar con sh compileC-TDS-PCR.sh desde linea de comando. 

Uso del Compilador:
El compilador se usa desde /compilador/src/main con ./ctds-PCR pathArchivoACompilar flags
*El path del archivo a compilar debe conter .ctds 
Los flags habilitados son:
-f: Ejecución del compilador con optimización del frame. 
-pu: Ejecución del compilador con poda de cógigo inalcanzable.
-pc: Ejecución del compilador ocn la optimización de propagación de constantes.
-o: Ejecución del compilador con todas las optimizaciones implementadas.
o ninguno para indicar el codigo sin optimizaciones.

Luego en el directorio donde se encuentra el archivo original .ctds encontrá el ejecutable
bajo el mismo nombre sin el .ctds. 

Por defecto el compilador linkea con la libreria standard del lenguaje C-TDS: libTestCTDS.c  

Alternativamente puede ejecutar el compilador de la siguiente manera:
java Ctds pathArchivoACompilar pathDestino flags desde el directorio  /compilador/src/main

*Donde pathDestino sera el lugar donde se almacenará el código assembler x86-64.
*Los flags son idems a los mencionados anteriormente

Luego deberá utilizar gcc para generar código ejecutable:
gcc pathDestion -o destinoEjecutable

En compilador/src/main se encuentra disponible un script executeTest.sh que corre una bateria de test del compilador.
Se ejecuta desde la carpeta donde se encuentra con el siguiente comando: sh executeTest.sh



compilador's People

Contributors

fraverta avatar cesarcorne avatar

Watchers

 avatar Mariano Politano avatar  avatar

compilador's Issues

Optimizacion en Frame

Hacer una optimización en el uso de Frame. Dentro de un procedimiento, cuándo un usuario abre un bloque puede crear variables locales, la posibilidad de acceder a esas variables solo es posible si se realiza dentro del bloque que la contiene (checkeado en parseo a través de la tabla de símbolos). Sin embargo, en la posterior traducción a assembler, el offset es reservado en el frame durante toda al ejecución del procedimiento.

El issue implica asignar offset de manera de restringir la vida del espacio reservado solo durante el tiempo posible de referenciación.

Test Lenguage Funcionality

Finalizada la etapa de desarrollo de funcionalidades del lenguaje, realizar un test exhaustivo de funcionalidad de TODAS las caracteristicas del lenguaje.

Propagación de Constantes

Luego de la creación del AST es posible reducir su tamaño podando todos aquellas instrucciones cuya ejecución pueda ser decidida en tiempo de compilación. Por ejemplo podemos tener una suma entre dos literales.
El issue implica la creación de un Visitor que pode el AST haciendo "Propagación de Constantes"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.