Цитата(Копейкин @ May 17 2016, 14:34)

Компилятор IAR так поступает при выключенной оптимизации (или невысоком уровне).
Тут советовали головой думать, но моя не может придумать - "зачем"?
Зачем неиспользуемые регистры складывать в стек??
Хотелось, чтобы основные "просьбы" к компилятору были в исходнике, а не различных ключах.
Именно поэтому есть задачки, не решаемые на С гарантированно, рассчитывать на здравый смысл компилятора я бы не стал.
Цитата(Alechek @ May 17 2016, 14:40)

Да, и определитесь, что у вас закончилось, стек или флеш.... не вяжется как-то.
Прошу без эмоций определить, что быстрее заканчивается при таком подходе
Код
11e: 1f 92 push r1
120: 0f 92 push r0
122: 0f b6 in r0, 0x3f; 63
124: 0f 92 push r0
126: 11 24 eor r1, r1
128: 2f 93 push r18
12a: 3f 93 push r19
12c: 4f 93 push r20
12e: 5f 93 push r21
130: 6f 93 push r22
132: 7f 93 push r23
134: 8f 93 push r24
136: 9f 93 push r25
138: af 93 push r26
13a: bf 93 push r27
13c: ef 93 push r30
13e: ff 93 push r31
Это еще годный код, т.к. не все регистры убираются в стек, а только используемые.
Я описывал ситуацию, когда банальная установка переменной оборачивалась push-ами и pop-ами для всех регистров.
В моем случае резко закончилась флеш, хотя и к глубине стека требования резко возрастают.
Перед использованием С этот же проект был реализован на asm. При 10% asm-функционала на С закончился флеш.