Один пустой цикл for там сожрал 8 строк, когда я на асме это-же делаю в 4 строки.
А так пробовали?
Если я правильно понял словосочетание "пустой for"...
Код: Выделить всё
#include <avr/io.h>
void main(void)
{
register volatile unsigned char i asm("r16");
for (i=0; i<100; i++);
while (1);
}
Дизассемблер:
Код: Выделить всё
@00000053: main
---- exp.c ----------
4: {
+00000053: 930F PUSH R16 Push register on stack
7: for (i=0; i<100; i++);
+00000054: E000 LDI R16,0x00 Load immediate
+00000055: C001 RJMP PC+0x0002 Relative jump
+00000056: 5F0F SUBI R16,0xFF Subtract immediate
+00000057: 3604 CPI R16,0x64 Compare with immediate
+00000058: F3E8 BRCS PC-0x02 Branch if carry set
+00000059: CFFF RJMP PC-0x0000 Relative jump
+0000005A: 94F8 CLI Global Interrupt Disable
+0000005B: CFFF RJMP PC-0x0000 Relative jump
Сам цикл занимает четыре строчки...
На С тоже есть свои твики...