He estado escribiendo una aplicación para microcontroladores AVR. Tenía la intención de grabarlo en ATtiny13A (porque es barato, y de todas formas no usaría funciones complejas), pero en ese momento solo tenía ATmega328P disponible, así que lo usé para desarrollar el código. Sabiendo que el tamaño del flash de ATtiny13A es de solo 1kB, pasé bastante tiempo optimizando el código para el tamaño, haciéndolo 910B. Hoy, mi ATtiny13A ha llegado. Sin embargo, cuando recompilé el código para este hardware, el código tomó solo 772 B, ¡un 15% de diferencia! Si supiera esto antes, esperaría con esas optimizaciones. No uso ninguna función de biblioteca avanzada; los únicos archivos incluidos son: avr/io.h
y util/delay.h
. Por lo tanto, me pregunto qué causó la diferencia de tamaño: ¿eran esas suposiciones adicionales que el compilador podría usar para conocer la plataforma de destino? Si es así, ¿cuáles eran? ¿O tal vez los archivos incluidos en sí mismos contienen algún código repetitivo que varía entre las plataformas?
Nota: Estoy usando avr-gcc 4.8.1.