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

 
 
> Не могу решить проблему вызова функций IAR, используется 1 раз, но вызывается call
haker_fox
сообщение Oct 26 2005, 23:29
Сообщение #1


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Здравствуйте! Моя программа состоит из нескольких модулей. Есть главный модуль main.c, в нем для инициализации различных частей программы вызываются функции из других модулей. Причем эти функции используются однократно, при запуске программы. Уровень оптимизации стоит максимальный и по размеру кода. Просмотрев дизассемблированный текст, я увидел, что эти функции вызываются с помощью rcall. Нельзя ли что-нибудь настроить, чтоб тело этих функции помещалось на место команды rcall, т.е. чтобы они не вызывались (ведь больше они не где не используются), таким образом экономим память (оптимизация то по размеру).

В общем мой вопрос так звучит: как сделать, чтоб однократно используемые функции не вызывались, а их тело помещалось вместо вызова подпрограммы.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
haker_fox
сообщение Oct 26 2005, 23:58
Сообщение #2


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Цитата
Вообще для этого в IAR (не знаю как в других средах) есть директива #pragma inline=forced.
Но язаметил такую особенность - если функция , например void if(), объявленная как inline, и функция которая вызывает void if(), находятся в одном модуле, то void if(), компилируется как inline без call и ret. Если же функции в разных модулях, то функция void if(), вызывается через call.


А нельзя ли это автоматизировать, что сам компилятор это выполнял. А то трудно уследить какие функции будут использоваться однократно.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 27 2005, 00:36
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(haker_fox @ Oct 27 2005, 07:58)
А нельзя ли это автоматизировать, что сам компилятор это выполнял. А то трудно уследить какие функции будут использоваться однократно.


Я использую директиву #pragma inline=forced в основном в прерываниях, для разделения задачи на более мелкие подзадачи - так удобнее потом в этом разбираться и мне, и тем, для кого я пишу. Да и при написания процедуры обработки прерывания, если внутри процедуры нет вызовов call, код компилируется меньше за счет сокращения числа сохраненных РОН. А вообще наверное есть смысл подставлять данную директиву везде, если есть вероятность вызова функции всего один раз. На счет автоматизации этого процесса ничего сказать не могу.


--------------------
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- haker_fox   Не могу решить проблему вызова функций IAR   Oct 26 2005, 23:29
- - prottoss   Цитата(haker_fox @ Oct 27 2005, 07:29)В общем...   Oct 26 2005, 23:39
- - haker_fox   2prottoss: спасибо! Я поставля эти директивы в...   Oct 27 2005, 00:56
- - starter48   Цитата(haker_fox @ Oct 27 2005, 06:29)В общем...   Oct 28 2005, 10:55
- - haker_fox   Но если разместить функции в одном модуле, то проп...   Oct 28 2005, 14:29
|- - starter48   Цитата(haker_fox @ Oct 28 2005, 21:29)Но если...   Oct 28 2005, 14:41
|- - prottoss   Цитата(starter48 @ Oct 28 2005, 22:41)Можешь ...   Oct 28 2005, 15:15
|- - starter48   Цитата(prottoss @ Oct 28 2005, 22:15)Компилят...   Oct 28 2005, 15:52
|- - prottoss   Цитата(starter48 @ Oct 28 2005, 23:52)Нужно о...   Oct 28 2005, 16:12
|- - starter48   Цитата(prottoss @ Oct 28 2005, 23:12)Тогда об...   Oct 28 2005, 16:39
|- - prottoss   Цитата(starter48 @ Oct 29 2005, 00:39)1) Прощ...   Oct 28 2005, 16:53
|- - starter48   Цитата(prottoss @ Oct 28 2005, 23:53)Цитата(s...   Oct 28 2005, 17:11
|- - prottoss   Цитата(starter48 @ Oct 29 2005, 01:11)Зачем с...   Oct 28 2005, 18:59
|- - starter48   Цитата(prottoss @ Oct 29 2005, 01:59)Цитата(s...   Oct 28 2005, 19:29
|- - prottoss   Цитата(starter48 @ Oct 29 2005, 03:29)А как т...   Oct 29 2005, 19:27
- - _artem_   Po moemu C99 podderzivaet inline keyword . No IAR ...   Oct 29 2005, 19:43
- - halfdoom   Цитата(haker_fox @ Oct 27 2005, 02:29)Моя про...   Oct 31 2005, 10:40
- - Balaganov   Цитата(halfdoom @ Oct 31 2005, 13:40) Цит...   Nov 26 2005, 11:38
- - zltigo   Цитата(Balaganov @ Nov 26 2005, 13:38) Ес...   Nov 26 2005, 22:26
- - Balaganov   Цитата(zltigo @ Nov 27 2005, 01:26) Цитат...   Nov 27 2005, 22:48


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

 


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


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