|
IAR Inline, Как заставить ? |
|
|
|
Jul 18 2017, 09:52
|
Частый гость
 
Группа: Участник
Сообщений: 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
|
|
|
|
|
 |
Ответов
|
Jul 20 2017, 12:36
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(pokk @ Jul 20 2017, 12:48)  float апаратный Даже если аппаратный. Вы как бы совсем не задумывались, что используя float внутри ISR, необходимо сохранить/восстановить контекст FPU на входе/выходе ISR? А например на Cortex-M этот контекст в разы больше чем стандартный сохраняемый контекст. Время этого сохранения/восстановления будет много больше чем выигрыш от inline вашей функции. Да надеюсь у Вас этот контекст вообще - сохраняется/восстанавливается?  Цитата(pokk @ Jul 20 2017, 13:08)  Ага увы, поспихал почти все обратно в один модуль, только что ещё раз отключил галку Function inlining ровно 500 тактов прибавилось. Да ладно здесь байки рассказывать! На вызов/возврат из функции (две команды CALL/BX LR) тратится +500 тактов??? Здесь всё-таки не форум кухарок....
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|