реклама на сайте
подробности

 
 
> __C_task
Student2
сообщение Aug 6 2009, 12:53
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 4-08-09
Из: Болгария / София
Пользователь №: 51 737



После ознакомления с рекомендации IAR для оптимального кода я стал използовать __C_task перед main() и увидел сразу уменьшения кода. Потом поставил __C_task перед процедурами которые вызывались из main() без параметрами и код снова уменшился. Притом код продолжает хорошо работать.

Вопрос - что будеть если поставить __C_task перед процедурами которые вызываются с параметрами из main()? Вообще где можно и где не надо поставить __C_task ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
HARMHARM
сообщение Aug 6 2009, 13:04
Сообщение #2


читатель даташитов
****

Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999



__C_task это эквивалент __noreturn. То есть, компилятор не будет вставлять эпилог функции - восстановление стека и регистров.
Реально можно использовать для main и задач - то есть для функций, из которых не происходит возврат.
Go to the top of the page
 
+Quote Post
Student2
сообщение Aug 6 2009, 13:10
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 4-08-09
Из: Болгария / София
Пользователь №: 51 737



Реално я вижу что компилатор вставить RET в конце процедур вызванных из main() с __C_task спереди. То что поменялось - IAR не ползует DSTACK перед вызов процедур.

ИМХО __C_task не совсем __noreturn

Сообщение отредактировал Student2 - Aug 6 2009, 13:10
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 01:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.01352 секунд с 7
ELECTRONIX ©2004-2016