Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > > Man sieht hier leider nicht viel, ich vermute der Optimizier ist an (die vielen "in" und "out" sprechen dafür) > und man sollte eine "mixed" Darstellung mit C Source ausgeben lassen. So kann ich auch nur wenig > erkennen. > > Wenn man kein malloc() nehmen will, kann man bei lokalen arrays das Stackframe in Abhängigkeit > vom Übergabeparameter anders allozieren. Ich vermute mal, das der Funktionscode am Anfang die > benötigte Größe ausrechnet, dabei auch für n dynamische arrays dann n anonyme pointer alloziert werden. > Die offsets werden dann in Abhängigkeit von den array Größen berechnet (hier in dem Beispiel ist es ja > nur ein Array) und danach den pointern zugewiesen. Der Array Zugriff findet dann über die pointer statt. > > So würde ich das mal adhoc programmieren. Ist aber ekelig bis man das alles am Laufen hat. Da vergehen > einige Manntage. > > Aber sollte ich für die nächste C-Control Pro Version etwas Luft haben, stecke ich meine Energie eher in > den Einbau von structs. Das wäre viel wichtiger. > > > Gruss Peter > > > > > Ok mal ausprobiert. So super dynamisch ist das gar nicht. > > hier draus: > > > > void blablubb(int arraysize) > > { > > int laber[arraysize]; > > for(int i = 0; i < arraysize; i++) > > laber[i] = i+10; > > > > } > > > > int main(void) > > { > > blablubb(10); > > //... > > } > > > > macht der AVR-GCC: > > > > 000002d4 <blablubb>: > > > > 2d4: df 93 push r29 > > 2d6: cf 93 push r28 > > 2d8: cd b7 in r28, 0x3d ; 61 > > 2da: de b7 in r29, 0x3e ; 62 > > 2dc: 9c 01 movw r18, r24 > > 2de: 4d b7 in r20, 0x3d ; 61 > > 2e0: 5e b7 in r21, 0x3e ; 62 > > 2e2: 88 0f add r24, r24 > > 2e4: 99 1f adc r25, r25 > > 2e6: 6d b7 in r22, 0x3d ; 61 > > 2e8: 7e b7 in r23, 0x3e ; 62 > > 2ea: 68 1b sub r22, r24 > > 2ec: 79 0b sbc r23, r25 > > 2ee: 0f b6 in r0, 0x3f ; 63 > > 2f0: f8 94 cli > > 2f2: 7e bf out 0x3e, r23 ; 62 > > 2f4: 0f be out 0x3f, r0 ; 63 > > 2f6: 6d bf out 0x3d, r22 ; 61 > > 2f8: ed b7 in r30, 0x3d ; 61 > > 2fa: fe b7 in r31, 0x3e ; 62 > > 2fc: 31 96 adiw r30, 0x01 ; 1 > > 2fe: 80 e0 ldi r24, 0x00 ; 0 > > 300: 90 e0 ldi r25, 0x00 ; 0 > > 302: 04 c0 rjmp .+8 ; 0x30c <blablubb+0x38> > > 304: 0a 96 adiw r24, 0x0a ; 10 > > 306: 81 93 st Z+, r24 > > 308: 91 93 st Z+, r25 > > 30a: 09 97 sbiw r24, 0x09 ; 9 > > 30c: 82 17 cp r24, r18 > > 30e: 93 07 cpc r25, r19 > > 310: cc f3 brlt .-14 ; 0x304 <blablubb+0x30> > > 312: 0f b6 in r0, 0x3f ; 63 > > 314: f8 94 cli > > 316: 5e bf out 0x3e, r21 ; 62 > > 318: 0f be out 0x3f, r0 ; 63 > > 31a: 4d bf out 0x3d, r20 ; 61 > > 31c: cf 91 pop r28 > > 31e: df 91 pop r29 > > 320: 08 95 ret > > > > Also halb so wild. Der nurzt hier wohl kein malloc oder so... das säh > > anders aus. Wenn ich das Array FIX auf 10 elemete festleg, sind nur 24 Byte weniger Code. > > Sieht eher aus als würd der das auf den Stack legen ... > > aber hab nicht so Ahnung von Asembler. > > > > > >