|
научить IAR AVR 5.5 оптимизировать сохранение регистров, при вызове между модулями |
|
|
|
 |
Ответов
|
Jul 12 2012, 08:50
|

Гуру
     
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954

|
Цитата(megajohn @ Jul 12 2012, 12:15)  в прерывании вызываю функцию, которая в другом файле/модуле инкрементирует байт. Если функция вида Код void F(void) { ++X; } то, почему бы её не сделать Код #pragma inline
|
|
|
|
|
Jul 12 2012, 09:22
|

Профессионал
    
Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143

|
Цитата(Палыч @ Jul 12 2012, 13:14)  "просто вы не умеете их готовить..." (С) из рекламы я уже и так inline static void app_init( void ) и так #pragma inline = forced void app_init( void ) но не работает. Как правильно ?
--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
|
|
|
|
|
Jul 13 2012, 12:10
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(megajohn @ Jul 12 2012, 12:22)  я уже и так inline static void app_init( void )
и так #pragma inline = forced void app_init( void )
но не работает. Как правильно ? Правильно вроде так Код #pragma inline = forced inline void app_init( void ) { } UDP: Такой вариант получается тоже правильный: Код #pragma inline = forced void InterruptFunction( void ) // вызывается в прерывании {} InterruptFunction надо располагать в h-файле и тогда не все 16 регистров сохраняются (у меня штук 6), в отличие от случая если InterruptFunction находится в с-файле.
|
|
|
|
|
Jul 13 2012, 18:44
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Ещё нашёл два варианта inline: 1. Код #define PRAGMA(x) _Pragma( #x ) #define INLINE PRAGMA( inline=forced ) static 2. Код #define INLINE _Pragma("inline=forced") inline Но какой из них правильней и предпочтительней?
|
|
|
|
|
Jul 13 2012, 19:38
|
Гуру
     
Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136

|
Цитата(_Артём_ @ Jul 13 2012, 22:44)  Но какой из них правильней и предпочтительней? С точки зрения переносимости кода правильнее применять макросы, так как в стандартном языке Си нет такой штуки, как inline. С точки зрения вредной преждевременной оптимизации вообще не надо применять ни inline, ни макросы. Применять их надо начинать только тогда, когда доказано, что от них будет реальная (а не воображаемая) польза.
|
|
|
|
|
Jul 14 2012, 10:48
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(scifi @ Jul 13 2012, 22:38)  в стандартном языке Си нет такой штуки, как inline. Цитата 6.7.4 Function specifiers Syntax 1 function-specifier: inline С момента принятия стандарта C99 прошла дюжина лет. С тех пор «стандартный» С мог бы и иметь inline. «старостандартный» может и не иметь. Но я давно с такими не работал. Цитата( @ Jul 13 2012, 23:13)  это по-прежнему преждевременная оптимизация Как правило, применение inline столь же очвидно, как и применение для конкретного контроллера 8 (16) - битного типа вместо 16 (32) - битного. Хотя можно не заниматься преждевременной оптимизацией и для всех переменных брать long. «а вот заработает — посмотрим, какой из переменных какой диапазон нужен на самом деле»
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
Сообщений в этой теме
megajohn научить IAR AVR 5.5 оптимизировать сохранение регистров Jul 12 2012, 08:15 scifi Можно попробовать Multifile Compilation (--mfc). Jul 12 2012, 08:30 megajohn Цитата(scifi @ Jul 12 2012, 12:30) Можно ... Jul 12 2012, 09:41  scifi Цитата(megajohn @ Jul 12 2012, 13:41) EWA... Jul 12 2012, 09:55  _Артём_ Цитата(megajohn @ Jul 12 2012, 12:41) EWA... Jul 12 2012, 12:40   megajohn Цитата(_Артём_ @ Jul 12 2012, 16:40) Как ... Jul 12 2012, 14:13    _Артём_ Цитата(megajohn @ Jul 12 2012, 17:13) Нет... Jul 12 2012, 14:42     megajohn Цитата(_Артём_ @ Jul 12 2012, 18:42) Да, ... Jul 13 2012, 06:01      demiurg_spb Дык, против лома нет приёма Jul 13 2012, 07:59 prottoss Я как то бодался с этой фигней в итоге написал обр... Jul 12 2012, 08:46    Сергей Борщ QUOTE (megajohn @ Jul 12 2012, 12:22) Как... Jul 12 2012, 09:39       _Артём_ Цитата(scifi @ Jul 13 2012, 22:38) С точк... Jul 13 2012, 20:00        scifi Цитата(_Артём_ @ Jul 14 2012, 00:00) Есть... Jul 13 2012, 20:13         _Артём_ Цитата(scifi @ Jul 13 2012, 23:13) Даже о... Jul 13 2012, 20:47          scifi Цитата(_Артём_ @ Jul 14 2012, 00:47) Но ч... Jul 13 2012, 20:57           _Артём_ Цитата(scifi @ Jul 13 2012, 23:57) Может ... Jul 13 2012, 22:32         _Артём_ Цитата(scifi @ Jul 13 2012, 23:13) Даже о... Jul 15 2012, 17:54          scifi Цитата(_Артём_ @ Jul 15 2012, 21:54) Есть... Jul 16 2012, 05:51           _Артём_ Цитата(scifi @ Jul 16 2012, 08:51) К прим... Jul 16 2012, 13:03            demiurg_spb Цитата(_Артём_ @ Jul 16 2012, 17:03) Оказ... Jul 16 2012, 13:24 Rst7 QUOTE в прерывании вызываю функцию, которая в друг... Jul 12 2012, 11:39
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|