A raiz del desarrollo, de mi nuevo compilador Pascal PicPas para microcontroladores PIC, realicé hace poco, y con apoyo de Agustin Hernandez, una comparación en el tamaño del código generado y uso de RAM, entre diversos compiladores, existentes en el mercado (libres y privativos), incluyendo mi compilador.
Aunque ya antes había realizado comparaciones, de manera informal, y con instrucciones aisladas, esta vez quise hacer una comparación más detallada y uniforme, considerando el uso de la memoria RAM y FLASH.
Para ello, elegí un código simple, que pudiera ser traducido fácilmente a los distintos lenguajes que usan estos compiladores, y que a la vez tenga una aplicación práctica.
El programa de muestra fue tomado de http://www.todopic.com.ar/foros/index.php?topic=4530.msg38857#msg38857, y se basa en un juego de luces, al estilo el «Auto Fantástico», usando el PIC16F84. Este programa es bastante simple para poder usarse en todos los compiladores de prueba, incluyendo a PicPas que tiene aún funciones limitadas.
Se tuvo que crear una versión adaptada al lenguaje y dialecto de cada compilador. Los códigos fuentes de la comparación, los pueden ver aquí,
Agradablemente, el resultado fue:
CCS
===
RAM: 7 bytes FLASH: 135 words
MikroC
======
RAM: 18 bytes FLASH: 126 words
Pic Micro Pascal
===============
RAM: 4 bytes FLASH: 104 words
Proton Basic Compiler 3.6.0
===========================
RAM: 4 bytes FLASH: 88 words
XC8 v1.42
=========
RAM: 5 bytes FLASH: 102 words
GCBASIC 0.97.01
===============
RAM: 4 bytes FLASH: 74 words
PicPas
======
RAM: 2 bytes FLASH: 64 words
Posteriormente, al agregar otros compiladores, se tuvo el siguiente resultado:
Y como pueden ver, al menos en esta prueba, los compiladores más óptimos fueron PicPas, GCBASIC, y Proton Basic. En ese orden.
Se incluyó un código en ensamblador, solo como muestra, ya que no se trata de un compilador, pero sirve como referencia.
Un observación curiosa, es que los compiladores en C, fueron los que en este caso quedaron peor.
De todas formas, esta prueba es solo una muestra, y habría que hacer más pruebas para ver si el cuadro de optimización se mantiene.
¿Cómo citar este artículo?
- En APA: Hinostroza, T. (27 de agosto de 2017). Comparación entre compiladores para PIC. Blog de Tito. https://blogdetito.com/2017/08/27/comparacion-entre-compiladores-para-pic/
- En IEEE: T. Hinostroza. (2017, agosto 27). Comparación entre compiladores para PIC. Blog de Tito. [Online]. Available: https://blogdetito.com/2017/08/27/comparacion-entre-compiladores-para-pic/
- En ICONTEC: HINOSTROZA, Tito. Comparación entre compiladores para PIC [blog]. Blog de Tito. Lima Perú. 27 de agosto de 2017. Disponible en: https://blogdetito.com/2017/08/27/comparacion-entre-compiladores-para-pic/
NO PUDE BAJAR LOS PRGRAMAS, PERO CONVERTI EL PROGRAMA PARA mikroc FOR PIC Y ME DIO 65 BYTES DE FLASH Y 2 BYTES DE RAM
MENOS QUE EL ASM
NO VI QUE PROGRAMA UTILIZARON LA PAGINA ESTA CAIDA
JUAN LUIS DURUSSEL
Hola.
He actualizado el enlace. Ten en cuenta que MikroC, reserva 16 bytes de RAM, obligatoriamente. Es decir que no se pueden usar para otros fines. Es por eso que si el compilador te dice que usa 2 bytes. En realidad está usando 18 bytes.