avr-gcc -g -mmcu=atmega16 -c my.c - компилируем
avr-gcc -g -mmcu=atmega16 -o my.elf my.o - получаем эльфа
avr-objdump -h -S my.elf > my.lst - из эльфа получаем лист
дык вот в этом листе и просматривал, как оно компилирует...
Это мы в курсе
Вообще, я так подозреваю, что промежуточный код генерится gcc, и лишь потом, при оптимизации уже готового промежуточного кода, приводится к виду avr-gcc... Хотя может быть я ошибаюсь.
Вот-вот! Это оно самое
Достаточно поставить в первой строчке -O1
Как пример без ключика -Os:
DDRA = 0xFF;
получаем:
ldi r30, 0x3A
ldi r31, 0x00
ldi r24, 0xFF
st Z, r24
Теперь ставим ключик -O1, и получаем:
ldi r25, 0xFF
out 0x1a, r25
Вот это уже другой коленкор
Неа... Да уже и не надо. Хотя может быть позже попробую.