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

 
 
> IAR Inline, Как заставить ?
pokk
сообщение Jul 18 2017, 09:52
Сообщение #1


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

Группа: Участник
Сообщений: 91
Регистрация: 3-07-11
Пользователь №: 66 028



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

Изначально у меня все функции было в одном модуле, и объявлены как static + inline, и компилятор их на самом деле инлайнил, но со временем модуль разросся, и теперь хочу некоторые выделить в отдельный модуль, но увы IAR 7.5 не хочит их инлайнить даже при "Multi-file Compilation"

Может не правильно их объявляю?

Код
#pragma inline=forced
inline float32_t Func1(float32_t Data1,float32_t Data2){
.........
}

и в хедере
Код
extern void Handler_adc(void);

При включенной галки "Multi-file Compilation" компилятор это все компилирует но вставление тела функции я не вижу =((

Сообщение отредактировал pokk - Jul 18 2017, 09:52
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
pokk
сообщение Jul 20 2017, 09:48
Сообщение #2


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

Группа: Участник
Сообщений: 91
Регистрация: 3-07-11
Пользователь №: 66 028



float апаратный, а на инлайнах теряется около 500 тактов из всего 4700, хотя пока есть запас в 1700, но чем больше тем лучше.



Сообщение отредактировал pokk - Jul 20 2017, 09:53
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 20 2017, 12:36
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(pokk @ Jul 20 2017, 12:48) *
float апаратный

Даже если аппаратный. Вы как бы совсем не задумывались, что используя float внутри ISR, необходимо сохранить/восстановить контекст FPU на входе/выходе ISR? А например на Cortex-M этот контекст в разы больше чем стандартный сохраняемый контекст. Время этого сохранения/восстановления будет много больше чем выигрыш от inline вашей функции.
Да надеюсь у Вас этот контекст вообще - сохраняется/восстанавливается? biggrin.gif

Цитата(pokk @ Jul 20 2017, 13:08) *
Ага увы, поспихал почти все обратно в один модуль, только что ещё раз отключил галку Function inlining ровно 500 тактов прибавилось.

Да ладно здесь байки рассказывать! rolleyes.gif
На вызов/возврат из функции (две команды CALL/BX LR) тратится +500 тактов???
Здесь всё-таки не форум кухарок.... laughing.gif
Go to the top of the page
 
+Quote Post
scifi
сообщение Jul 20 2017, 13:42
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(jcxz @ Jul 20 2017, 15:36) *
На вызов/возврат из функции (две команды CALL/BX LR) тратится +500 тактов???
Здесь всё-таки не форум кухарок.... laughing.gif

Рискуете прослыть кухаркой, уважаемый.
Если, скажем, вызовов штук 20, да ещё принять во внимание Wait States, то ничего невероятного тут нет.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 20 2017, 14:08
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(scifi @ Jul 20 2017, 16:42) *
Если, скажем, вызовов штук 20, да ещё принять во внимание Wait States, то ничего невероятного тут нет.

См. сообщения #5 и #6.

PS: Не ну конечно можно предположить, что у ТС CPU выполняет код из внешней флешь, подключенной по SPI и работающей на низкой SCLK и без кеширования.
В случае такого изврата конечно - каждый такт на счету и может и всего один вход/выход в функцию потянуть на 500+ тактов biggrin.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- pokk   IAR Inline   Jul 18 2017, 09:52
- - Obam   IAR C/C++ Development Guide "Inlining is norm...   Jul 18 2017, 10:50
- - jcxz   Цитата(pokk @ Jul 18 2017, 12:52) Может н...   Jul 18 2017, 11:36
- - pokk   ЦитатаНадеюсь это вынесено в хидер? Размещение все...   Jul 19 2017, 02:47
|- - jcxz   Цитата(pokk @ Jul 19 2017, 05:47) Размеще...   Jul 19 2017, 08:43
- - pokk   Да вызывается в одном месте. Кодvoid SAI1_IRQHand...   Jul 19 2017, 08:51
- - x893   Задайтесь вопросом - почему static inline ... функ...   Jul 19 2017, 13:12
|- - scifi   Цитата(x893 @ Jul 19 2017, 16:12) Задайте...   Jul 19 2017, 16:46
|- - Obam   Цитата(scifi @ Jul 19 2017, 20:46) Я бы д...   Jul 19 2017, 17:14
- - x893   Иногда бывает нужно. На счет максимального уровня ...   Jul 19 2017, 17:19
|- - Obam   Цитата(x893 @ Jul 19 2017, 21:19) Иногда ...   Jul 20 2017, 07:30
- - pokk   Цитата(scifi @ Jul 19 2017, 20:46) Я бы д...   Jul 20 2017, 01:41
|- - k155la3   Цитата(pokk @ Jul 20 2017, 04:41) Да хочу...   Jul 20 2017, 06:42
|- - scifi   Цитата(pokk @ Jul 20 2017, 04:41) Да хочу...   Jul 20 2017, 07:20
|- - jcxz   Цитата(pokk @ Jul 20 2017, 04:41) Да хочу...   Jul 20 2017, 08:22
|- - scifi   Цитата(jcxz @ Jul 20 2017, 11:22) И когда...   Jul 20 2017, 08:31
- - scifi   Кстати, gcc с опцией -flto инлайнит направо и нале...   Jul 20 2017, 09:53
- - pokk   ЦитатаКстати, gcc с опцией -flto инлайнит направо ...   Jul 20 2017, 10:08
- - pokk   Цитата(jcxz @ Jul 20 2017, 15:36) Да наде...   Jul 21 2017, 02:00
|- - Obam   Цитата(pokk @ Jul 21 2017, 06:00) Структу...   Jul 21 2017, 07:39
|- - jcxz   Цитата(pokk @ Jul 21 2017, 05:00) Неа не ...   Jul 21 2017, 07:58
- - x893   А что бы не взять профайлер и посмотреть ?   Jul 21 2017, 02:23
- - pokk   Я через St-link программирую а он его кажись не по...   Jul 21 2017, 04:31
- - scifi   Цитата(pokk @ Jul 21 2017, 07:31) Пробова...   Jul 21 2017, 04:59


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

 


RSS Текстовая версия Сейчас: 17th June 2025 - 19:55
Рейтинг@Mail.ru


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