Genau wie dein main().
Meine Umsetzung geht natürlich davon aus, daß die while-Schleife der einzige Inhalt von main() ist. Naheliegende Optimierung nicht erkannt? Naja, warum solltest du auch besser sein als dein Compiler...
Inwiefern? Das sind zwei 16Bit-Zeiger als Parameter. Wieso sollte ich für sowas den ultralangsamen Stack bemühen? Diese Optimierungsmöglichkeit erkennt ja sogar jeder halbwegs brauchbare Compiler noch.
Aber ansonsten ist das ein schönes Beispiel, um zu zeigen, wie suboptimal Compiler (inbesondere avr-gcc) tatsächlich immer noch sind. Nehmen wir mal an, "machwas" sollte näherungsweise mit der von dir vorgegebenen Funktionssignatur arbeiten und die Aufgabe von "machwas" wäre, in feld[X] jeweils die Summe der ASCII-Werte der chars in text von Position 0 bis Position X abzulegen. Also das komplette (natürlich ziemlich sinnfreie) Programm sähe in C in etwa so aus:
char *text="Hallo Welt"; int feld[256];
void machwas(text,textlen,feld) { int sum=0; for (i=0;i