Hallo,
Bei folgendem Code von Dirk Broßwick aus der Codesammlung:
1 | void __attribute__ ((naked, section (".init8")))
|
2 | __init8_mem (void)
|
3 | {
|
4 | __asm volatile (
|
5 | "ldi r30, lo8 (__heap_start)" "\n\t"
|
6 | "ldi r31, hi8 (__heap_start)" "\n\t"
|
7 | "ldi r24, %0" "\n\t"
|
8 | "ldi r25, hi8 (%1)" "\n"
|
9 | "0:" "\n\t"
|
10 | "st Z+, r24" "\n\t"
|
11 | "cpi r30, lo8 (%1)" "\n\t"
|
12 | "cpc r31, r25" "\n\t"
|
13 | "brlo 0b"
|
14 | :
|
15 | : "i" (MASK), "i" (RAMEND+1)
|
16 | );
|
17 | }
|
wird mit dem GCC Compiler immer folgende Fehlermeldung ausgegeben
1 | hardware/mem-check.c:54: internal compiler error: in start_function, at c-decl.c:6014
|
Leider kann ich nicht nachvollziehen, was in dieser Codesequenz im
Einzelnen geschieht und kann deshalb in keinster Weise sinvolle
Änderungen machen. Aus dem Kontext konnte ich erkennen, das es sich um
eine Art in Assembler realisierten Zähler handelt, der den freien
Speicher bestimmen soll und einer c Funktion zur Verfügung stellt.
Kann jemand genaueres über die Funktion und ihre Realisierung sagen?
Danke