Die Dinger haben keinen RAM, vergiß es. Das ist der wesentliche
Grund, warum avr-gcc sie nicht unter C unterstützt.
Aber ganz ehrlich, bekommst Du das eine Kilobyte an Flash nicht
auch mit Assembler gefüllt? (Das sind 512 Befehle, mehr paßt
also nicht.) Rudimentären Support für die kleinen ATtinys (und
den AT90S1200, der in der selben Liga spielt) hat die avr-libc,
d. h. insbesondere, daß Du die Konstanten aus <avr/io.h>
benutzen kannst.
Es stimmt übrigens so pauschal nicht, daß ,,die Tinys'' vom
avr-gcc nicht unterstützt würden. Die ATtiny-Varianten mit RAM
werden auch unter C unterstützt (ATtiny22 und ATtiny26, wobei
der 22 mittlerweile durch den AT90S2343 ersetzt worden ist).
Im Übrigen kannst Du ja mal folgende Strategie probieren:
binde all Deine Variablen fest an Register (steht in der FAQ,
wie das geht). Dann compiliere das Projekt für einen etwas
größeren AVR in Assemblercode (avr-gcc -S). Diesen fummelst
Du dann so zurecht, daß er für Dein Exemplar paßt. Du mußt
natürlich die push/pop Registerrettung der Unterprogramme
auch eliminieren, außerdem haben die kleinen ATtinys einige
Befehle nicht, die die größeren AVRs haben.