avr-gcc-list
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [avr-gcc-list] Peculiar code size problem


From: Weddington, Eric
Subject: Re: [avr-gcc-list] Peculiar code size problem
Date: Sun, 18 Mar 2012 14:14:23 -0600

Your function pulse_en reduced in size as expected. However, your
overall code size increased.

Without access to the rest of your code, we cannot tell what causes the
overall size increase.

Eric

> -----Original Message-----
> From: address@hidden
[mailto:avr-
> address@hidden On Behalf Of
> Parthasaradhi Nayani
> Sent: Saturday, March 17, 2012 10:17 PM
> To: address@hidden
> Subject: [avr-gcc-list] Peculiar code size problem
> 
> 
> 
> Hi all,
> I am working on an ATMEGA8. Since my code was getting close to 8K, I
thought I
> would tweak the code. I have a function listed below
> 
> 
> void pulse_en (void)
> {
>   set_EN; // Set EN
>   _delay_loop_1 (255);
>   clr_EN; // clear EN
>  _delay_loop_1 (255);
> }
> Since the delay after the "clr" instruction had no meaning, I
commented the
> line and compiled the code hoping I would save a couple of bytes. But
to my
> surprise the code size increased to 7172 bytes compared to 7148 bytes
with the
> function call in place. I looked at the list file and found that the
function
> gets shifted to a different location with and without the function
call. Here
> are the list file snippets
> 
> With the call in place:
> 
> 351               pulse_en:
>  352               .LFB23:
>  353               .LM47:
>  354               /* prologue: function */
>  355               /* frame size = 0 */
>  356               .LM48:
>  357 0128 C29A       sbi 56-32,2
>  358               .LBB80:
>  359               .LBB81:
>  360               .LM49:
>  361 012a 8FEF       ldi r24,lo8(-1)
>  362 012c 982F       mov r25,r24
>  363               .LVL17:
>  364               /* #APP */
>  365               ;  83 "c:/winavr-
> 20100110/lib/gcc/../../avr/include/util/delay_basic.h" 1
>  366 012e 9A95       1: dec r25
>  367 0130 01F4       brne 1b
>  368               ;  0 "" 2
>  369               /* #NOAPP */
>  370               .LBE81:
>  371               .LBE80:
>  372               .LM50:
>  373 0132 C298       cbi 56-32,2
>  374               .LBB82:
>  375               .LBB83:
>  376               .LM51:
>  377               /* #APP */
>  378               ;  83 "c:/winavr-
> 20100110/lib/gcc/../../avr/include/util/delay_basic.h" 1
>  379 0134 8A95       1: dec r24
>  380 0136 01F4       brne 1b
>  381               ;  0 "" 2
>  382               .LVL18:
>  383               /* epilogue start */
>  384               /* #NOAPP */
>  385               .LBE83:
>  386               .LBE82:
>  387               .LM52:
>  388 0138 0895       ret
> 
> Without the call:
> 621               .LFE21:
>  623               .global pulse_en
>  625               pulse_en:
>  626               .LFB23:
>  627               .LM87:
>  628               /* prologue: function */
>  629               /* frame size = 0 */
>  630               .LM88:
>  631 01c2 C29A       sbi 56-32,2
>  632               .LBB146:
>  633               .LBB147:
>  634               .LM89:
>  635 01c4 8FEF       ldi r24,lo8(-1)
>  636               .LVL36:
>  637               /* #APP */
>  638               ;  83 "c:/winavr-
> 20100110/lib/gcc/../../avr/include/util/delay_basic.h" 1
>  639 01c6 8A95       1: dec r24
>  640 01c8 01F4       brne 1b
>  641               ;  0 "" 2
>  642               /* #NOAPP */
>  643               .LBE147:
>  644               .LBE146:
>  645               .LM90:
>  646 01ca C298       cbi 56-32,2
>  647               /* epilogue start */
>  648               .LM91:
>  649 01cc 0895       ret
> 
> 
> Will some one please let me know why this is happening? If such is the
case,
> perhaps extra code is being generated for other function too.
> I am using: avr-gcc (WinAVR 20100110) 4.3.3
> 
> Thank you for your time.
> 
> Regards,
> Nayani
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]