Autor Tema: Creando un Compilador C universal para PIC  (Leído 5757 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado beto1234

  • PIC12
  • **
  • Mensajes: 52
    • Osm Gps Pwa
Creando un Compilador C universal para PIC
« 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

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
« Última modificación: 27 de Mayo de 2012, 12:08:34 por beto1234 »

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Creando un Compilador C universal para PIC
« Respuesta #1 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.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Creando un Compilador C universal para PIC
« Respuesta #2 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 !



Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Creando un Compilador C universal para PIC
« Respuesta #3 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:
No contesto mensajes privados, las consultas en el foro

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Creando un Compilador C universal para PIC
« Respuesta #4 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.
« Última modificación: 27 de Mayo de 2012, 14:42:47 por bigluis »
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Creando un Compilador C universal para PIC
« Respuesta #5 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...

Desconectado droky

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 628
    • Diseños radikales libres
Re: Creando un Compilador C universal para PIC
« Respuesta #6 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
Yo... he visto cosas que vosotros no creeríais... atacar naves en llamas más allá de Orión, he visto rayos C brillar en la oscuridad cerca de la puerta Tannhäuser.
Todos esos momentos se perderán en el tiempo como lágrimas en la lluvia.
Es hora de morir.

Si me buscas en twitter, me tienes por @radikaldesig

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Creando un Compilador C universal para PIC
« Respuesta #7 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:
El papel lo aguanta todo

Desconectado darck_khronos

  • PIC18
  • ****
  • Mensajes: 493
Re: Creando un Compilador C universal para PIC
« Respuesta #8 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.

Desconectado beto1234

  • PIC12
  • **
  • Mensajes: 52
    • Osm Gps Pwa
Re: Creando un Compilador C universal para PIC
« Respuesta #9 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

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Creando un Compilador C universal para PIC
« Respuesta #10 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!
No contesto mensajes privados, las consultas en el foro

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Creando un Compilador C universal para PIC
« Respuesta #11 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 !