Comparación entre compiladores para PIC

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 compialdores 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í: https://github.com/AguHDz/PicPas-Librerias_y_Programas/tree/master/Comparacion%20PicPas-Otros%20Compiladores

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.

 

Puntuación: 0 / Votos: 0

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


*