He estado usando XC8 v1.34 por un tiempo, y desde que se lanzó v1.41 me actualicé a esa versión. Solo por el bien de la nada, recompilé un proyecto maduro y vi que el valor de "Programa utilizado" (en el tablero de instrumentos) disminuyó en uno, así que sentí mucha curiosidad por lo que estaba optimizado (ambos compiladores utilizaron la optimización del modo PRO) .
Encontré la opción de menú Windows - > Depuración - > Lista de desensamblaje en MPLAB y en el que había un código de ensamblador limpio (debajo de cada declaración C), así que corté y pegué el contenido de v1.34 y v1.41 en dos archivos separados y ejecuté una diferencia. Lo único que difiere es la marca de tiempo, lo cual fue extraño ya que MPLAB dice "Espacio de programa utilizado: 142" para v1.34 y 141 para v1.41, pero los desensambladores son exactamente iguales.
Luego trato de eliminar todas las líneas C y el encabezado de la salida con:
$ grep -v '^[0-9]*\:' 134 | grep ^[0-9] > 134_2
$ grep -v '^[0-9]*\:' 141 | grep ^[0-9] > 141_2
En los archivos eliminados no hay más que código de ensamblaje puro. Así que vuelvo a comprobar:
$ wc -l *_2
139 134_2
139 141_2
278 total
$ md5sum 134_2 141_2
b6aa911111d43cf5251cda7d4e871fdb 134_2
b6aa911111d43cf5251cda7d4e871fdb 141_2
I.e exactamente el mismo código. 139 códigos de operación también, no 141 o 142.
¿Por qué MPLABX informa el valor incorrecto?