Цитата(sigmaN @ May 9 2017, 23:00)

ЗАЧЕМ? Зачем он делает всё это????
Посмотрите новый IAR 3.10 (есть на ftp). Он уже гораздо лучше компилит и не делает многих тех странностей, что старый.
По крайней мере, там где старый генерил полный маразм:
Код
95 } while (++smplN < ncell(smpl));
\ 000063 A6 01 LD A, #0x1
\ 000065 BB .. ADD A, S:smplN
\ 000067 B7 .. LD S:smplN, A
\ 000069 B6 .. LD A, S:smplN
\ 00006B A1 10 CP A, #0x10
\ 00006D 25 A7 JRC L:??McGenerate_0
новый для того же места выдаёт вполне разумно (я бы на асме так же написал-бы):
Код
95 } while (++smplN < ncell(smpl));
\ 00005F 3C .. INC S:smplN
\ 000061 B6 .. LD A, S:smplN
\ 000063 A1 10 CP A, #0x10
\ 000065 25 AF JRC L:??McGenerate_0
Ну и много других мест.
И это даже при "Low" оптимизации.