Есть вопрос по компилятору IAR. решил я на свою голову просмотреть на что похож ассемблер STM8 ну и сравнивал что делает компилятор IAR. Так вот в ассемблере есть простая команда инкремента «INC» которая, если я правильно понял, умеет инкрементировать значение аккумулятора или любой ячейки ОЗУ. Но компилятор IAR про нее не знает или ..?
итак код:
Код: Выделить всё
void main(void)
{
uint8_t tst = 0;
tst++;
}
IAR превращает в
Код: Выделить всё
LD A,(?b1, SP)
ADD A, #?b1
LD (?b1, SP),A
причем при максимальном уровне оптимизации вместо ADD все таки появляется команда INC но остальные две никуда не деваються
Код: Выделить всё
LD A,(?b1, SP)
INC A
LD (?b1, SP),A
Вопрос: по какой причине компилятор IAR может так делать?