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 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.

 


2 comentarios

  1. 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.

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*