Old1 0 16 января, 2006 Опубликовано 16 января, 2006 · Жалоба Нельзя при использовании модификатора с _z использовать вызов функции по указателю, т.к. IJMP имеет адрес в Z. Идея ясна? Ну...если быть точным то не IJMP, а ICALL... Похоже, что так оно и есть, при вызове функции по указателю Z занят (и Х тоже используется). Для меня странно другое: в других случаях, если компилятор считал, что применение квалификаторов с _z и _х недопустимо (или нерационально?), он их игнорировал (по крайней мере в результате экспериментов я пришел к такому выводу), а здесь выдает ошибку... И все таки неясно, что за атрибут __version_3? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Old1 0 25 июня, 2006 Опубликовано 25 июня, 2006 · Жалоба Если кому интересно, в версии ИАР 4.20а атрибуты __x, __z __x_z, __z_x уже документированы (см. avr/doc/iccavr.htm): Miscellaneous ... __x, __z __x_z, __z_x The compiler defines the function type attributes __x, __z __x_z, and __z_x which are used by parts of the runtime library. These attributes can give very efficient code in a local perspective, but should be used with care as they change the calling convention and may have a negative effect on the size of the entire application. Keyword Description __x The first pointer in the parameter list is placed in register X __z The first pointer in the parameter list is placed in register Z __x_z The first pointer in the parameter list is placed in register X and the second one in register Z __z_x The first pointer in the parameter list is placed in register Z and the second one in register X Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bill 0 27 июня, 2006 Опубликовано 27 июня, 2006 · Жалоба Также есть еще SBRA и CBRA - это коммады какие-то AVR, иар их может использовать. Что за хрень - не знаю. Ни в стандартном, ни в расширенном наборе (по крайней мере для ATmega) таких инструкций нет. Что имели в виду ИАРовцы - не понятно. Вчера мне ответили на "Телесистемах" cbra/sbra Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prst 0 1 ноября, 2013 Опубликовано 1 ноября, 2013 · Жалоба Cуществует и __z_x и __x_z - соответственно, как передавать первый и второй указатель. По поводу только указателей - если очень надо, преобразуй например int в void * и передай, а потом наоборот. На форуме "Точка опоры" я писал про недокумментированные фичи иара, всякие "__raw", "__no_return" и прочее. Поищи там, давненько дело было. Также есть еще SBRA и CBRA - это коммады какие-то AVR, иар их может использовать. Что за хрень - не знаю. Да, да, знаю - эта тема уже давно гремучий баян(2005г) и подняда с анала истории, но вот только щас наткнулся... )) Дима, сегодня разбирал твой AVR код от NikeE и напоролся на __x_z - раньше ни когда не встречал, это было как выстрел в лоб ;) я так и не нашел твою статью на какойто там "Точка опоры", даже сайта не нашел. А так хотелось... Хочу уточнить(это вопрос) - На сколько я понял из всего тут написанного то если в АВРке не использовать этот самый __x_z(и ему подобные модификаторы) то просто будет менее оптимальный код и соответсвенно медленее исполняться. Я всё верно понял? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 1 ноября, 2013 Опубликовано 1 ноября, 2013 · Жалоба Хочу уточнить(это вопрос) - На сколько я понял из всего тут написанного то если в АВРке не использовать этот самый __x_z(и ему подобные модификаторы) то просто будет менее оптимальный код и соответсвенно медленее исполняться. Я всё верно понял? Да. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
grand1987 0 15 марта, 2014 Опубликовано 15 марта, 2014 (изменено) · Жалоба Здравствуйте, у меня есть вопрос подобный тем что обсуждались в этой ветке : при помощи какого атрибута/прагмы можно указать ИАР-овскому компилятору для ARM не добавлять сохранение/восстановление контекста для функции/прерывания, т.е. аналог __attribute__((naked)) в GCC. Пробовал __task - никакого эффекта. Использую бесплатную версию среды (EWARM 7.10, IAR C/C++ Compiler for ARM (7.10.1.6676)), с ограничение до 32КБ. Заранее благодарю. Изменено 15 марта, 2014 пользователем grand1987 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 58 16 марта, 2014 Опубликовано 16 марта, 2014 · Жалоба Здравствуйте, у меня есть вопрос подобный тем что обсуждались в этой ветке : при помощи какого атрибута/прагмы можно указать ИАР-овскому компилятору для ARM не добавлять сохранение/восстановление контекста для функции/прерывания, т.е. аналог __attribute__((naked)) в GCC. Пробовал __task - никакого эффекта. Использую бесплатную версию среды (EWARM 7.10, IAR C/C++ Compiler for ARM (7.10.1.6676)), с ограничение до 32КБ. Заранее благодарю. У IAR такое есть только для AVR, называется - __raw (если ещё не убрали). Было добавлено давно по специальной просьбе. В других компиляторах IAR нет (видимо, никто не просил). Вроде так, если я не отстал от жизни. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться