|
Недокументированные возможности IAR, extended keywords __x_z, __z? |
|
|
|
Dec 16 2005, 10:12
|

Знающий
   
Группа: Свой
Сообщений: 697
Регистрация: 26-07-05
Из: Могилев
Пользователь №: 7 095

|
Просматривал хидер pgmspace.h и обратил внимание на модификаторы __x_z и __z, в мануале на компилятор про их назаначение ничего не нашел (или плохо искал?...), в апликашках они тоже вроде бы не встречаются. Решил попробовать использовать их наугад, написал простенький код на С++ (описал две одинаковых функции одна с __x_z, другая без, исходный код и результат компиляции см. в присоединенных файлах), скомпилировал, оказалось что код функции с модификатором компактнее (за счет ИМХО более рационального использования регистров-указателей) и выполняется быстрей (на 30% в данном примере). Вопросы: кто, что о них (модификаторах) знает (особенности их использования)? Какие мысли есть о том, почему ИАР ничего не пишет о них ( ведь ИМХО вещ вроде бы полезная)?
|
|
|
|
|
 |
Ответов
|
Dec 19 2005, 16:20
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(ig_z @ Dec 19 2005, 17:36)  Очень странно. Какой у вас компилер и версия? У меня мсп430 3.30
итак: __raw и __task подавляют сохранение/восстановление регистров в для "прерывательных" и "обычных" функций __interrupt -заменяет рет на ирет __root обязывает компилятор/линкер включать функцию в объектный/бинарный файл, даже если на нее нет ни одной ссылки __noreturn keyword can be used on a function to inform the compiler that the function will not return. Т.е. не Эксперимент: IAR ARM ANSI C/C++ Compiler V4.30A-P050906/W32 __raw и __task - знать не знает, ведать не ведает таких :-(. Ругается долго и мучительно (вообще с локализацией ошибки IAR далеко не в первых рядах). __interrupt - тоже не знает, но не беда, ибо __irq имеет место быть... __root - не ругается, ну может и работает, как описано __noreturn - не делает ничего.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Dec 20 2005, 07:22
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(zltigo @ Dec 19 2005, 22:20)  Эксперимент: IAR ARM ANSI C/C++ Compiler V4.30A-P050906/W32 __raw Это ключевое слово было введено изначально только в пакет EW430 исключительно по личной просьбе. До него в версиях пакета до 2.20 включительно эту функциональность выполняло сочетание __task __interrupt (выглядит забавно-шокирующе, но работало), в дальнейшем в версии 2.21 такое сочетание было запрещено по идеологическим причинам (что, в общем, правильно). Но поскольку потребность в выполняемой ими функциональности никуда не делась, то в версиях 3.хх появилось новое слово __raw (еще рассматривался вариант __naked, как в ГНУтых компиляторах, но IAR'овцы открестились от него - gcc наиболее серьезный конкурент их продуктам). Такова вкратце история появления оного ключевого слова. Поскольку все это шло в контексте EW430, то неудивительно, что в пакетах под другие платформы такого слова нет. Возможно, это только временно. Я ожидал, что в EWAVR 4.10А это появится. Не появилось. Поэтому и удивился, когда сказали, что в 4.11[2] появилось. Видать, осознали.  Т.ч. может и для АРМов тоже со временем появится. Хотя не факт. Цитата(zltigo @ Dec 19 2005, 22:20)  и __task - знать не знает, ведать не ведает таких Хм, это странно. Такое слово было всегда. Сначала оно называлось C_task. Потом __C_task. Потом привели к общему виду __task. Смысл в нем был, есть и будет всегда. Странно, если EWARM этого не имеет. Может оно там просто по-другому называется?
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Dec 20 2005, 12:31
|
Местный
  
Группа: Свой
Сообщений: 437
Регистрация: 27-08-04
Пользователь №: 551

|
Цитата(dxp @ Dec 20 2005, 11:22)  Это ключевое слово было введено изначально только в пакет EW430 исключительно по личной просьбе. Пару лет назад в переписке с Harry Zhurov впервые прочитал эту фразу. Да и по вашим ответам складывалось впечатление что это вы и есть. Я прав?
|
|
|
|
Сообщений в этой теме
Old1 Недокументированные возможности IAR Dec 16 2005, 10:12 dxp Цитата(Old1 @ Dec 16 2005, 16:12) Просмат... Dec 16 2005, 10:31 IgorKossak Для улучшения скорости и компактности некоторых фу... Dec 16 2005, 11:02 Rst7 Цитата(IgorKossak @ Dec 16 2005, 13:02) Д... Dec 16 2005, 14:08  IgorKossak Цитата(Rst7 @ Dec 16 2005, 16:08) ...По п... Dec 16 2005, 15:43   dxp Цитата(IgorKossak @ Dec 16 2005, 21:43) Х... Dec 16 2005, 17:27    Old1 Цитата(dxp @ Dec 16 2005, 20:27) А что в ... Dec 16 2005, 18:51   ig_z Как то пытался переписывать порты под вытесняющие ... Dec 17 2005, 03:58    Rst7 Цитата(ig_z @ Dec 17 2005, 05:58) .....
П... Dec 17 2005, 07:40     Old1 Цитата(Rst7 @ Dec 17 2005, 11:40) Подавля... Dec 19 2005, 07:34      ig_z Цитата(Old1 @ Dec 19 2005, 11:34) Цитата(... Dec 19 2005, 15:36       Old1 Цитата(ig_z @ Dec 19 2005, 19:36) Очень с... Dec 19 2005, 20:39    IgorKossak Цитата(ig_z @ Dec 17 2005, 05:58) Подавля... Dec 19 2005, 08:08   _Bill Цитата(IgorKossak @ Dec 16 2005, 18:43) Ц... Jun 27 2006, 11:55  PrSt Цитата(Rst7 @ Dec 16 2005, 17:08) Cуществ... Nov 1 2013, 04:41 zltigo Цитата(IgorKossak @ Dec 19 2005, 10:08) а... Dec 19 2005, 11:57 IgorKossak Для задач я обычно применяю __task.
Помогает одноз... Dec 19 2005, 12:37     dxp Цитата(IgorKossak @ Dec 20 2005, 19:24) Э... Dec 20 2005, 14:34      ig_z 2 dxp
scmRTOS планируете развивать?
Интересно был... Dec 20 2005, 15:22       dxp Цитата(ig_z @ Dec 20 2005, 21:22) 2 dxp
s... Dec 21 2005, 07:15 Rst7 Да, господа, по поводу __root прогнал. Конечно, __... Dec 20 2005, 06:20 zltigo Цитата(dxp @ Dec 20 2005, 09:22) Хм, это ... Dec 20 2005, 07:55 Turion По поводу инструкций SBRA и CBRA - попробуйте в w... Dec 27 2005, 12:29 Old1 Вот еще один квалификатор (или атрибут типа функци... Jan 14 2006, 18:35 Rst7 Цитата(Old1 @ Jan 14 2006, 20:35) Вот еще... Jan 15 2006, 06:42  Old1 Цитата(Rst7 @ Jan 15 2006, 10:42) Цитата(... Jan 15 2006, 16:55   Rst7 Цитата(Old1 @ Jan 15 2006, 18:55) ...
О п... Jan 16 2006, 06:19    Old1 Цитата(Rst7 @ Jan 16 2006, 10:19) Нельзя ... Jan 16 2006, 20:49 Old1 Если кому интересно, в версии ИАР 4.20а атрибуты _... Jun 25 2006, 17:54 Rst7 QUOTE Хочу уточнить(это вопрос) - На сколько я пон... Nov 1 2013, 23:01 grand1987 Здравствуйте, у меня есть вопрос подобный тем что ... Mar 15 2014, 13:29 dxp QUOTE (grand1987 @ Mar 15 2014, 20:29) Зд... Mar 16 2014, 12:58
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|