TODOPIC

Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: beto1234 en 27 de Mayo de 2012, 08:33:29

Título: Creando un Compilador C universal para PIC
Publicado por: beto1234 en 27 de Mayo de 2012, 08:33:29
 Hola hace poco se me ocurrió la idea de hacer un compilador Argentino de software libre GPL, parecido al CCS, pero con la ventaja de ser libre y con mayor cantidad de dispositivos incluido los pic32.
 Alguien tiene idea de algún proyecto similar, que me pueda servir de base, o que lo podamos debatir acá mismo.
 
 Como pienso hacerlo:

1- un editor de texto donde escribamos los códigos en c.
2- Esos codigos en C lo pasamos a ensamblador.
3- Los códigos en ensamblador usando el mplab lo compilamos y sacamos el hex.

3 bis - Si se puede no usar el mplab para compilar el archivo ensamblador mucho mejor.

Software libre no es igual a soft gratis.

Definicion de software Libre (http://www.gnu.org/philosophy/free-sw.es.html)

Al compilador lo podríamos llamar ARG C (Compilador Argentino en C) :)

Para empezar podemos ir mirando este Analizador léxico de instrucciones de lenguaje C. Esta hecho en VB6

DESCARGAR ANA. LEXICO (http://www.codigogratis.com.ar/download/vb_analizadorLexicoC.zip)
Título: Re: Creando un Compilador C universal para PIC
Publicado por: AngelGris en 27 de Mayo de 2012, 10:14:20
  Me gusta la idea  ((:-))

  Si no me equivoco está el SDCC que creo es free.

  Yo utilizo HiTech, pero para asm utilizo gpasm que es free... viene dentro de gputils.
Título: Re: Creando un Compilador C universal para PIC
Publicado por: RICHI777 en 27 de Mayo de 2012, 13:16:47
Hola. Muy buena idea aunque no es para nada trivial. Creo que primero deberiamos distinguir entre compilador e IDE ( entorno integrado de desarrollo ). El segundo es el programa que te permite manejar proyectos, editar codigo, debuggear, etc. Para estas cosas existen ya proyectos open source como Eclipse o NetBeans. Desde mi punto de vista desarrollar un compilador es una tarea titanica !. Te dejo un link donde se resume un poco las tareas involucradas para desarrollar un compilador.

http://www.exa.unicen.edu.ar/catedras/compila1/index_archivos/Introduccion.pdf

Como bien mencionaron SDCC y GCC son ambos compiladores de codigo abierto.

Saludos !


Título: Re: Creando un Compilador C universal para PIC
Publicado por: Suky en 27 de Mayo de 2012, 14:22:44
Desde mi punto de vista desarrollar un compilador es una tarea titanica !.

+1

Si por aquí hay un licenciado en computación o alguno de conocimientos parecidos, te van a poder dar un enfoque más claro de que se trata  :tongue:
Título: Re: Creando un Compilador C universal para PIC
Publicado por: bigluis en 27 de Mayo de 2012, 14:35:09
Creo que ya existen algunos. Entre ellos esta el IDE Pinguino que es un compilador para PIC, libre y parecido a Arduino. Si no me equivoco Eclipse acaba de agregar nuevas librerias C++ para trabajar con PIC. GCC tiene algunas librerías para PIC también, pero hasta donde sé solo para PIC12 al 16 y PIC18. En cualquier caso es como dicen, simplemente debes agregar las librerías a compiladores ya existentes.

Recuerda que un compilador no es nada más que un convertidor de código, en este caso de C a assambler.
Título: Re: Creando un Compilador C universal para PIC
Publicado por: MerLiNz en 27 de Mayo de 2012, 16:55:34
te vas a tirar la mayor parte de tu vida haciendolo  :D es muy complejo, largo hacer un compilador. Piensa que detras de los programadores de microchip (c18, c30, c32...) hay mucha gente trabajando en ello y aun asi se hace largo...
Título: Re: Creando un Compilador C universal para PIC
Publicado por: droky en 27 de Mayo de 2012, 21:55:47
Bueno, un compilador es mucho más que convertir código de C a ASM.
Debes pasar por varias fases:
-Análisis Léxico
-Análisis sintáctico (arbol sintáctico)
-Análisis semántico (Parser)
-Generar un código intermedio ( si usas libreiras, necesitas implementar un linker)
-Optimizar el código (asignación de punteros en memoria, bancos de memoria, recolector de basura, variables en tiempo real...)
-Generar un código objeto que sea aceptado por el ensamblador

Quizás sería más sencillo crear un pseudolenguaje interpretado dentro del PIC, al estilo de los Basic Stamp, o la otra opción sería crear un framework, con un lenguaje C propio pero que compilara sobre un compilador C de código abierto ( al estilo de Arduino sobre GCC), en el que lo importante sería cuidar la semántica y el parser, ya que el linkado, optimización y compilado de código objeto quedaría relegado a algo tipo GCC o SDCC.
El problema, es que los verdaderos compiladores de C para PIC, son propietarios (Hitec, MicroC, CCS, Micropic C) y no se pueden usar como compilación final.
Aún así, si quieres hacer algo decente, deberías crear los generadores léxico-sintáctico con FLEX y YACC que cumplen estándares POSIX y te permiten usar gramáticas formales y expresiones simples además de autómatas finitos para el lenguaje que vayas a crear.
Puedes encontrar unos cuantos generadores de analizadores sintácticos para YACC en internet para Common Lisp, Haskell... y hacerte una idea.
Salu2
Título: Re: Creando un Compilador C universal para PIC
Publicado por: MLO__ en 27 de Mayo de 2012, 22:09:19
chanfle!!! ... lo que uno no sabe de estos programas!!!  resulta tan facil dar un click y ya  :shock:
Título: Re: Creando un Compilador C universal para PIC
Publicado por: darck_khronos en 28 de Mayo de 2012, 00:03:53
yo siento que seria mas facil hacer un decifrador, que pase de CCs a c18 por ejemplo o a algun otro, digo, si ya hay de C# a VB.net por que no uno entre C, claro que al igual que el diseñar un compilador es algo muy rudo, parte del problema no es que el compilador sea universal o no, el problema es que con forme existan nuevos micros tendra uno que entender su forma de trabajo y ademas no solamente seria hablar de pics, si no tambien que al pasar el C a hex o asm hay que encontrar equivalencias.
Título: Re: Creando un Compilador C universal para PIC
Publicado por: beto1234 en 28 de Mayo de 2012, 06:24:44
 Hola a todos gracias por sus respuestas y el aliento  :( jaja.  Mirando por aquí y por allá me encontré con este proyecto y es mas o menos justo lo que quiero hacer. El proyecto solo esta para un pic16f, a mi también me gustaría empezar así.
 Les dejo el sitio para que le den una mirada.
PIC-GCC (http://pic-gcc-library.sourceforge.net/)
Título: Re: Creando un Compilador C universal para PIC
Publicado por: Suky en 28 de Mayo de 2012, 11:24:11
Hola a todos gracias por sus respuestas y el aliento  :( jaja.

 :mrgreen: Es que un hobbysta o alguien fuera del campo de programación avanzada, la puede ver fácil...  Yo tengo una idea general, exactamente lo que comenta droky, por hermano licenciado en computación, entonces sabia que para algo serio es complejo  :tongue:


Saludos!
Título: Re: Creando un Compilador C universal para PIC
Publicado por: RICHI777 en 28 de Mayo de 2012, 20:31:30
Hola, muy bueno el link, lo que hizo Pedro José Ramírez Gutierrez es portar el back-end para los PIC16, es decir tomar el fuente de GCC y escribir el código específico para ese PIC, pero todo lo demás que te mencionaron antes ( LEXX, YACC ) ya esta resuelto en GCC y no lo tenes que volver a implementar. La contra de esto es que GCC trabaja con un arquitectura digamos virtual, por eso lo compiladores específicos son más eficientes, ejemplo IAR para ARM es más eficiente en la generación de código que el GCC para ARM.

Saludos !