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

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

[avr-gcc-list] Code Size produced by newer AVRGCC


From: Atanas Uzunov
Subject: [avr-gcc-list] Code Size produced by newer AVRGCC
Date: Sun, 17 Jun 2001 19:54:59 +0300

Hi to all,
I have a question about output code size of AVRGCC. When I compile it with
an older version of AVRGCC (1999-mm-dd) the size of the .HEX file is about 6
Kb, but when I compile it with a new version (2000/2001-mm-dd) the size is
very large about 15 Kb! I use various options -O2 -O3 -Os but output code
size doesn't differ very much. Then I disassemble the object files and saw
the strange thing - for example functions __addsf3 and __subsf3 used in
floating point calculations:


Older compiler:

000005ca <__subsf3>:
 5ca: 50 58        subi r21, 0x80 ; 128

000005cc <__addsf3>:
 5cc: 19 2e        mov r1, r25
 5ce: 09 d0        rcall .+18      ; 0x5e2
 5d0: 38 d0        rcall .+112     ; 0x642
 5d2: 1f c0        rjmp .+62      ; 0x612

 .
 .
 .

------------------------------------

Newer compiler:

000008a4 <__addsf3>:
     8a4: a0 e2        ldi r26, 0x20 ; 32
     8a6: b0 e0        ldi r27, 0x00 ; 0
     8a8: e7 e5        ldi r30, 0x57 ; 87
     8aa: f4 e0        ldi r31, 0x04 ; 4
     8ac: b2 c5        rjmp .+2916    ; 0x1412
     8ae: b9 2f        mov r27, r25
     8b0: a8 2f        mov r26, r24
     8b2: 97 2f        mov r25, r23
     8b4: 86 2f        mov r24, r22
     8b6: 89 8f        std Y+25, r24 ; 0x19
     8b8: 9a 8f        std Y+26, r25 ; 0x1a
 .
 .
 .


00000916 <__subsf3>:
     916: a0 e2        ldi r26, 0x20 ; 32
     918: b0 e0        ldi r27, 0x00 ; 0
     91a: e0 e9        ldi r30, 0x90 ; 144
     91c: f4 e0        ldi r31, 0x04 ; 4
     91e: 79 c5        rjmp .+2802    ; 0x1412
     920: b9 2f        mov r27, r25
     922: a8 2f        mov r26, r24
     924: 97 2f        mov r25, r23
     926: 86 2f        mov r24, r22
     928: 89 8f        std Y+25, r24 ; 0x19
     92a: 9a 8f        std Y+26, r25 ; 0x1a
 .
 .
 .

It looks like that the newer compiler produce individual code for most of
the functions, and this code is same in each one. I use makefiles used in
GCCTEST with a little modifications. I compiled other little programs with
demo versions with other commersial compilers and their code sizes are like
these ones compiled with the older AVRGCC.

Why the code size produced by the new AVRGCC is so large?

Regards,
Atanas Uzunov

http://www.mcs.dir.bg/index_en.htm
MICROCONTROLLER-BG







reply via email to

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