Gast
#2797392
Hallo, ich wollte mir mal ein lss-file anschauen und habe dafür z.B. das
folgende spektakuläre Programm kompiliert (ATMega32 mit Option -Os):
#include <avr/io.h>
typedef unsigned char uint8_t;
int main(void)
{
uint8_t i;
DDRB = 0xFF;
for (i=0;i<10;i++)
{
PORTB = i;
}
}
Die dazugehörige lss-Datei ist im Anhang.
Wenn ich auch nur
#include <avr/io.h>
int main(void) {}
kompiliere, tauchen trotzdem die Zeilen
7a: 80 e0 ldi r24, 0x00 ; 0
7c: 90 e0 ldi r25, 0x00 ; 0
in der lss-Datei auf. Warum löscht der Compiler die Register r24 und
r25? Haben die noch irgendeine spezielle Bedeutung, die mir nicht
bekannt ist? Ich weiß nur, dass die Register 26-31 als Pointer-Register
X,Y,Z verwendet werden.
Viele Grüße,
Hans