Группа: Участник
Сообщений: 83
Регистрация: 4-08-09
Из: Болгария / София
Пользователь №: 51 737
После ознакомления с рекомендации IAR для оптимального кода я стал използовать __C_task перед main() и увидел сразу уменьшения кода. Потом поставил __C_task перед процедурами которые вызывались из main() без параметрами и код снова уменшился. Притом код продолжает хорошо работать.
Вопрос - что будеть если поставить __C_task перед процедурами которые вызываются с параметрами из main()? Вообще где можно и где не надо поставить __C_task ?
__C_task это эквивалент __noreturn. То есть, компилятор не будет вставлять эпилог функции - восстановление стека и регистров. Реально можно использовать для main и задач - то есть для функций, из которых не происходит возврат.
Группа: Участник
Сообщений: 83
Регистрация: 4-08-09
Из: Болгария / София
Пользователь №: 51 737
Реално я вижу что компилатор вставить RET в конце процедур вызванных из main() с __C_task спереди. То что поменялось - IAR не ползует DSTACK перед вызов процедур.
ИМХО __C_task не совсем __noreturn
Сообщение отредактировал Student2 - Aug 6 2009, 13:10