Bug oder richtiges verhalten?

OP #1609538
Lesenswert?

Moin,

Ich benutze den gcc version 4.3.4 (GCC) unter Unix.
Mir ist folgendes aufgefallen:

Sagen wir mal, wir haben einen Source-Code wie z.B.
1
#include <avr/io.h>
2
#include "main.h"
3

4
int main(void)
5
{
6
        DDRD = 0xFF;
7
        PORTD = 0xFF;
8
        return 0;
9
}

und kompilieren diesen mit:
1
[...]
2
avr-gcc -c -mmcu=atmega8 -I. -gstabs   -O2 -Wall -Wstrict-prototypes -std=gnu99 -Wa,-adhlns=main.lst -DF_CPU=16000000UL -Wl,--relax,--gc-sections main.c -o main.o 
3
avr-gcc -mmcu=atmega8 -I. -gstabs   -O2 -Wall -Wstrict-prototypes -std=gnu99 -Wa,-adhlns=main.o -DF_CPU=16000000UL -Wl,--relax,--gc-sections main.o   --output main.elf     -lm

der Assembler-Dump (avr-objdump -d) zeigt jedoch in der main section:
1
[...]
2
0000005e <main>:
3
  5e:  8f ef         ldi  r24, 0xFF  ; 255
4
  60:  81 bb         out  0x11, r24  ; 17
5
  62:  82 bb         out  0x12, r24  ; 18
6
  64:  80 e0         ldi  r24, 0x00  ; 0
7
  66:  90 e0         ldi  r25, 0x00  ; 0
8
  68:  08 95         ret

Ich frage mich hierbei wofür ein ldi r25 (in 0x66) ausgeführt wird, wenn 
r25 hierbei gar nicht gebraucht wurde (auch nicht in den anderen 
sections).

Hab ich nicht aufgepasst, oder laeuft da etwas schief?

Gruß

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren