Why .map in Dynamic_C 9.62 show a very big function size?

In the .map file I got:
01:ea17 495 update_dif_obrir \MICRO5_205.C 986
01:ec06 14420 UpdatePrograms \MICRO5_205.C 1010
05:e45a 2995 procesa_entrada \MICRO5_205.C 1038
the UpdatePrograms show 14420 bytes size, very big for the function:

xmem void UpdatePrograms(void)
int i,flag;
for(i=1; i<_PROGRAMAS; i++)
if(programas[i].consigna == i) continue;
if(programas[i].consigna == 0) continue;

if(programas[i].referencia != programas[programas[i].consigna].referencia)
  {programas[i].referencia=programas[programas[i].consigna].referencia; flag=1;}
if(programas[i].dif_obrir != programas[programas[i].consigna].dif_obrir)
  {programas[i].dif_obrir=programas[programas[i].consigna].dif_obrir; flag=1;}
if(programas[i].dif_tancar != programas[programas[i].consigna].dif_tancar)
  {programas[i].dif_tancar=programas[programas[i].consigna].dif_tancar; flag=1;}
if(programas[i].t_ciclo != programas[programas[i].consigna].t_ciclo)
  {programas[i].t_ciclo=programas[programas[i].consigna].t_ciclo; flag=1;}
if(programas[i].t_apertura != programas[programas[i].consigna].t_apertura)
  {programas[i].t_apertura=programas[programas[i].consigna].t_apertura; flag=1;}
if(programas[i].t_cerrar != programas[programas[i].consigna].t_cerrar)
  {programas[i].t_cerrar=programas[programas[i].consigna].t_cerrar; flag=1;}

if(flag) writeUserBlock(0x000+(sizeof(programas[i])*programa),&amp;programas[i],sizeof(programas[i]));


I think this strange size is an artifact of the linking process where there is a gap in the memory map. I’ve seen it before in the map file for my code where the last function before the gap shows a size that includes the gap size. I think it is related to the no_lcall section in the case of Rabbit 4000 code under DC 10. I’m not familiar enough with DC 9 to know if it does the same…

1 Like