> das .org tabu ist, weiß ich auch :-) habs nur geschrieben , weil es
> genau das macht, was ich will, nur halt in asm.
Ist auch in Assembler tabu, wenn man anschließend einen Linker
benutzt. Hat nur für Absolutassembler Sinn, und die hat man selbst
vor 15 Jahren zum Linken eine CP/M-BIOS schon nicht mehr benutzt. ;-)
Der Ansatz verschieblicher Objektmodule, die erst vom Linker
zusammengefügt werden (so daß erst dieser die Absolutpositionen
kennt), ist halt flexibler.
>> -Wl,--change-section-address=.noinit=0x801100
> hab ich auch gelesen (mittlerweile lese ich ja auch die Dateien auf
> meiner Festplatte ;-) ), ich hab das aber so interpretiert, dass
> dann ALLE Variablen ab der angegebenen Adresse liegen.
Nein, nur die Variablen der section ".noinit". In diese section
mußt
Du Deine Variablen explizit hineinbefördern:
uint8_t largearray[32768] __attribute__((section(".noinit")));
Daher ja auch die etwas kompliziertere Schreibweise in den
Linkeroptionen. Alle normalen Variablen bleiben in den sections .data
bzw. .bss. Die Schreibweise
-Wl,-Tdata=0x8011000
ist nur eine Kurzform für
-Wl,--change-section-address=.data=0x8011000
Die letztgenannte Form läßt sich dafür für beliebige sections
benutzen, während die -T Variante nur für die drei Standard-sections
(.text, .data, .bss) geht.