pmp00

Microchip hace microcontroladores, que son estrictamente computadoras completas en un solo chip. Sirven para hacer sistemas embebidos y en cualquier curso de este tipo de circuitos digitales, se puede aprender a controlar un chip para medir temperaturas, para desplegar colores en un LED RGB, etcétera. La empresa que fabrica estos chips también soporta sus productos con software para ello. Por ejemplo, hacen el Pic Basic, el cual es un compilador optimizado para sus microcontroladores, que cuesta unos 270 dolares, una suma que es considerable para nosotros simplemente por el precio del dólar actualmente.

Pero desde luego, hay alternativas. Pic Micro Pascal (PMP) es una herramienta que trabaja con los chips de 8 bits de Microchip más populares (IC10, PIC12, PIC16, PIC18 y desde la versión V1.4, con el PIC16). El autor inicialmente lo creó para su uso personal porque pensó que otros compiladores iban mucho más allá que “un simple compilador de Pascal”, y por otra parte, los compiladores comerciales resultaban muy onerosos en término de precios para alguien que quería usarlos a nivel personal.

Por ello PMP no es un compilador comercial que hace todo, justifica su autor, pero que permite ayudar a los desarrolladores a desarrollar en términos de tamaño, de proyectos pequeños a de mediano alcance, aplicaciones para los procesadores Pic. Lo mejor es que es un sistema gratuito.

El enfoque más interesante del desarrollo fue no usar las funciones interconstruidas especiales para hacer la interfaz con los registros del hardware, sino usar estos registros de forma que sean accesibles como variables, y esto genera entonces código que resulta muy compacto. El lado oscuro de esta aproximación es que el código fuente no es portable a otros procesadores de otros fabricantes pero de nuevo, el autor aclara que su desarrollo es para PIC y se quedará en PIC.

En esta implementación, PMP soporta compilación de archivos múltiples, incluyendo para ello directivas como se hace por ejemplo en Turbo Pascal o Delphi. Aquellos que como yo, ha usado antes Turbo Pascal y ahora Delphi, se sentirá en un ambiente muy familiar de programación. PMP soporta récords simples, booleanos a nivel de bit,variables con o sin signo, enteros largo, arreglos en una dimensión y strings. Soporta variables de punto flotante (así como operaciones para PIC16 y PIC18 solamente (el formato es el de la IEEE en 32 bits).

PMP no tiene un ensamblador o un ligador (linker). Está diseñado para trabajar con la suite de Microchip MPLAB ya instalada y usa los archivos MPASM y MPLINK.inc, .dev y .lkr para la definición de los registros estándar del procesador y la inicialización del mapeo de memoria. El código, dice su autor, es bastante compacto pero puede incluso optimizarse en tamaño de memoria o velocidad (llamar a menos subrutinas, usar código en ensamblador “inline” de ser posible, por ejemplo).

PMP se inspiró en la implementación de MPTiny, por Thomas J. LeMense y en la interesante y muy recomendable serie de artículos: “Let’s Build A Compiler”, escrita por Jack Crenshaw en los años 1988 hasta 1992. El escáner de PMP se pudo hacer gracias a la ayuda de TPlex, una implementación de la herramienta LEX escrita en Turbo Pascal. TPLex es un trabajo de Albert Graef y Berend de Boer. La información de este programa y de su parte que lo complementa, YACC, puede hallarse en la página de TPLY. La biblioteca de punto flotante se inspiró en el trabajo estupendo de Mike Gore, llamada “PicFloat library”.

El autor, un francés que se identifica solamente como PPA pero que se llama Philippe Paternotte ([email protected]) termina con esta frase, con lo que da énfasis a sus razones de que su sistema es gratuito: “Software is like sex, it’s better when it’s free”. Linus Torvalds, Free Software Foundation conference, febuary 1996.
Referencias:

Pic Micro Pascal 
TPLex/Yacc
Let’s build a compiler