Autor Tema: Todos Juntos Para La Creación De Un COMPILADOR DE PIC EN C 100% LIBRE  (Leído 2971 veces)

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

Desconectado manuel_j555

  • PIC10
  • *
  • Mensajes: 15
Todos Juntos Para La Creación De Un COMPILADOR DE PIC EN C 100% LIBRE
« en: 19 de Septiembre de 2009, 15:52:30 »
Bueno la verdad no se que tan dificil pueda ser la realizacion de un compilador de pic en lenguaje C, pero soy de los que piensan que el trabajo en equipo puede lograr maravillas...  :mrgreen:

No se si este sea el sitio correcto donde deba ir el tema, lo coloque aquí ya que es un proyecto y precisamente para pics..  :D

Lo que propongo es ir realizando pruebas aportando macros que sirvan luego para ser utilizadas dentro del comilador, creo que lo mas importante por ahora es lograr que a partir de un archivo .c se cree otro .asm que luego se pueda compilar en mplab.

La verdad no tengo mucha experiencia con la programacion pero opino que entre todos debe salir algo muy bueno, y que pueda ser modificado y mejorado por todos sin ningun tipo de limitacion  :).

Espero que todos los interesados intentemos colaborar para ver si se logra dar este proyecto. No importa el tiempo puede ser algo a largo plazo pero que por lo menos en 1 año o menos tengamos ya algun prototipo, aunque sea para el pic16f84a con algunas funciones basicas...

Por ahora estoy realizando pruebas para ver como crear lo que seian las variables por lo menos las enteras ya que las char son de 1 byte, pero las int y long serian de 2 y 4 bytes respectivamente bueno no estoy muy seguro de los bytes todavia, lo estoy estudiando por estos dias...

   Saludos !!! 

Desconectado fabianjsm

  • PIC18
  • ****
  • Mensajes: 255
    • fabianjsm is on twitter
Re: Todos Juntos Para La Creación De Un COMPILADOR DE PIC EN C 100% LIBRE
« Respuesta #1 en: 19 de Septiembre de 2009, 16:05:05 »
En que lenguaje quieres hacerlo Manuel?
@fabianjsm is on twitter

Desconectado manuel_j555

  • PIC10
  • *
  • Mensajes: 15
Re: Todos Juntos Para La Creación De Un COMPILADOR DE PIC EN C 100% LIBRE
« Respuesta #2 en: 19 de Septiembre de 2009, 16:39:50 »
Puede ser en lenguaje C o C++ ,  aunque el ultimo no lo trabajo muy bien...  :?
« Última modificación: 19 de Septiembre de 2009, 16:42:10 por manuel_j555 »

Desconectado manuel_j555

  • PIC10
  • *
  • Mensajes: 15
Re: Todos Juntos Para La Creación De Un COMPILADOR DE PIC EN C 100% LIBRE
« Respuesta #3 en: 19 de Septiembre de 2009, 19:21:49 »
Bueno aca coloco un programa que divide un numero entero de 2 bytes en 2 partes una baja y una alta para poder trabajar con enteros mayores a 255 en los pics, no es algo muy importante pero para comenzar ya es algo  :lol:

Aqui coloco el codigo esta hecho en c++

Código: C++
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main(void)
  5. {
  6.     int num_int,parte_alta,parte_baja;
  7.    
  8.     cout << "Ingrese un Numero entero : ";
  9.     cin >> num_int;
  10.     parte_alta=0;
  11.     parte_baja=0;
  12.     if (num_int > 65535)
  13.     {
  14.        cout << endl << "Numero muy alto para este ejemplo..." << endl ;
  15.        
  16.     }
  17.     else if (num_int < 0)
  18.     {
  19.        cout << endl << "Numero negativo..." << endl ;
  20.        
  21.     }
  22.     else
  23.     {  
  24.         while (num_int  > 255)//mientras no quepa en la parte baja
  25.         {
  26.               num_int -= 256;
  27.               parte_alta++;
  28.         }
  29.         parte_baja = num_int;
  30.        
  31.         cout << endl << "Parte Alta :   " << parte_alta << endl ;
  32.         cout << endl << "Parte Baja :   " << parte_baja << endl ;
  33.     }
  34.    
  35.     system("pause");
  36.     return 0;
  37. }


Luego intentare estudiar la creacion de variables de tipo "float" aunque estas son mas complejas pero bueno hay veremos...

Lo que si estoy viendo complicado es lo del ambito de las variables, ya que la unica forma que conosco de crear variables en asm es con cblock ... endc   ó  etiqueta   equ  dirección.

Esto lo digo porque en C una variable que se declare dentro de una funcion solo  "vivira" mientras se este ejecutando esa funcion luego debe desaparecer y no se como crear variables temporales en asm.

Bueno si no buscare cotra manera de crear las variables en asm. Luego comento lo que vaya haciendo.

Saludos !!
« Última modificación: 19 de Septiembre de 2009, 19:26:33 por manuel_j555 »

Desconectado droky

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 628
    • Diseños radikales libres
Re: Todos Juntos Para La Creación De Un COMPILADOR DE PIC EN C 100% LIBRE
« Respuesta #4 en: 19 de Septiembre de 2009, 21:29:20 »
Hola,
Te voy a dejar un link a los fuentes de un lenguaje diseñado hace unos años para PICs, para que veas el desarrollo de un compilador con su linker, su parser, su scanner y como trata variables, el stack y demás...
http://sourceforge.net/projects/jal/files/jal/2005-Feb-10/jal-0.4.62.tar.gz/download
El JAL (Just Another Language) de Wouter van Ooijen es un lenguaje mezcla de ADA-Pascal y que tuvo un cierto éxito, pero que murió con la llegada de nuevas series de PICs.
HAbía una lista de usuarios que colaborábamos con el desarrollo de librerías o las portábamos de otros lenguajes y otro grupo dedicado a desarrollar el compilador intentando añadir nuevos micros que iban apareciendo.
No es por desanimar, pero el trabajo es muy grande.
Si no tienes experiencia trabajando con Parsers, primero te va a costar mucho entenderlos y es imperativo el buen control de la sintaxis y la gramática para evitar problemas.
Otra cosa importante es el tema del control del puntero de la pila del micro, ya que si no haces bien los cálculos durante la compilación, los desbordamientos son muy fáciles con 8 niveles.
La depuración de las llamadas a rutinas anidadas y las rutinas de interrupción.
El tema de las variables tambien es tela marinera, porque si quieres que el aprovechamiento de la memoria sea óptimo, debes organizarlas por ejemplo, los nibbles  de dos en dos, las variables tipo short/bool de ocho en ocho, controlar la pagina de memoria en la que están instaladas.
Para las matrices el tema es más complicado y si implementas punteros, pues la cosa se pone seria.
Si prescindes de estas cosas, entonces el lenguaje no tendrá sentido frente al CCS, MikroC o PICC y será trabajo en balde.
HAce tiempo comencé algo parecido pero para un lenguaje tipo Basic enfocado para gente sin experiencia en PICs más como herramienta complementaria educativa.



Conseguí implementar el Parser con un editor de ficheros y un mini-IDE. Hasta desarrollé un sistema simple de mapeo de memoria en colaboración con el parser que me localizaba las definiciones de variables y las iba agrupando en bytes:



Pero el trabajo era muy grande y no tengo demasiado tiempo para ello.
Lo cierto es que más interesante que un compilador en C, que ya existen muchos y mucho código desarrollado para ellos, sería un framework para por ejemplo Python, Ruby... basado en macros en lenguaje C y que acercara los Pics a gente que desarrolla con Arduino o lo aplica a pequeños proyectos artísticos o caseros...y ya de paso, acercarlo al MAC.
Llevo un tiempo a vueltas con el tema, pero me encuentro con el problema de las licencias.
CCS no es un lenguaje libre que se pueda implementar en el uso de macros ya que hace falta disponer del compilador de CCS que es de pago.
En el caso del PICC de Microchip no lo tengo muy claro... y claro, para ser un Framework tipo Ruby on rails, como que no es sensato hacer las macros en ASM.
Aún así, ánimo con el proyecto.

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


 

anything