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

 
 
> антипод модификатора __raw
ArtemKAD
сообщение Jun 22 2007, 11:12
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Появилась тут мысля. У IAR-а для не сохранения контекста в прерывании служит __raw. А есть ли его "антипод" - модификатор заставляющий IAR сохранить контекст некоторой функции (не прерывания) в стеке? help.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ArtemKAD
сообщение Jun 25 2007, 07:03
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Цитата
он ведь не знает, какие из них используются вызываемой функции,

Не понял, а кому кроме него знать как он распределит регистры для этой функции? Не я же их распределяю...
Go to the top of the page
 
+Quote Post
dxp
сообщение Jun 25 2007, 08:18
Сообщение #3


Adept
******

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



Цитата(ArtemKAD @ Jun 25 2007, 14:03) *
Не понял, а кому кроме него знать как он распределит регистры для этой функции? Не я же их распределяю...

А как же принцип раздельной компиляции? Функция-то может вообще в библиотеке лежать, и компилятор к ней доступа не имеет - ее потом уже линкер подлинкует. Компилятор обрабатывает один текущий файл и видит только код этого файла. Если используется встраиваемая фукнция, т.е. тело которой непосредственно встраивается в точку вызова, то тут да, комплятор все видит и сохраняет только то, что используется. А если фукнция вызываемая, то тут он не видит конкретного кода этой вызываемой фуникции, не знает, какие конкретно регистры в ней используются, поэтому сохраняет весь набор scratch регистров. Это для него единственный способ обеспечить целостность программы. Вывод: для эффективности не использовать вызовов функции в ISR либо использовать только встраиваемые фукнции. Для пущей уверенности - чтобы компилятор точно встроил тело функции (иногда он "умничает" и делает вызов), использовать для этой функции прагму принудительного встраивания (#pragma inline=forced).


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post



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

 


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


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