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

 
 
 
Reply to this topicStart new topic
> Оптимизация С-шного кода в IAR for MCS-51
shamray
сообщение Nov 23 2005, 12:47
Сообщение #1


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

Группа: Свой
Сообщений: 114
Регистрация: 31-08-05
Из: Украина, Одесса
Пользователь №: 8 105



Как научить IAR не оптимизировать участок кода. Может кто знает?
Спасибо.
Go to the top of the page
 
+Quote Post
one_man_show
сообщение Nov 23 2005, 14:09
Сообщение #2


Помогу, чем смогу
******

Группа: Админы
Сообщений: 2 786
Регистрация: 28-05-04
Из: Москва
Пользователь №: 25



Почитайте в IAR Compiler Reference на счет #pragma optimize=....
Для IAR for MSC-51 доки не читал, но для MSP430 точно есть эта pragma, которая позволяет регулировать или отключать оптимизацию для части кода. Эта прагма имеет эффект только для функции, следующей сразу после неё.
Например,
#pragma optimize=s 9 - Оптимизация по скорости, High
#pragma optimize=z 6 - Оптимизация по размеру кода, Medium
#pragma optimize=s 2 - Оптимизация по скорости отключена
и т.д.


--------------------
С уважением,
Ваган Саруханов
Проекты|Форум|Facebook|Linkedin
Go to the top of the page
 
+Quote Post
shamray
сообщение Nov 23 2005, 14:18
Сообщение #3


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

Группа: Свой
Сообщений: 114
Регистрация: 31-08-05
Из: Украина, Одесса
Пользователь №: 8 105



Надо не для функции а именно для части кода в функции. А #pragma optimize что-то не желает работать так как надо.
Go to the top of the page
 
+Quote Post
one_man_show
сообщение Nov 23 2005, 15:24
Сообщение #4


Помогу, чем смогу
******

Группа: Админы
Сообщений: 2 786
Регистрация: 28-05-04
Из: Москва
Пользователь №: 25



Выделите эту часть в отдельную функцию и для нее задайте прагму.
Цитата
А #pragma optimize что-то не желает работать так как надо.

А что именно не так работает?


--------------------
С уважением,
Ваган Саруханов
Проекты|Форум|Facebook|Linkedin
Go to the top of the page
 
+Quote Post
shamray
сообщение Nov 24 2005, 07:39
Сообщение #5


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

Группа: Свой
Сообщений: 114
Регистрация: 31-08-05
Из: Украина, Одесса
Пользователь №: 8 105



Я понял почему не работает. Я просто пытался применить прагму к участку кода а не к функции целиком. Мне просто необходимо было точно выдержать задержку, а компиллер неправильно это оптимизировал. Буду бороться дальше. А вот вынос в отдельную функцию мне не подходит - теряется вся выгода - при вызове функции скидывается в стек большое количесство параметров и это происходит дольше чем требуется. Спасибо за помощь.
Go to the top of the page
 
+Quote Post
one_man_show
сообщение Nov 24 2005, 13:23
Сообщение #6


Помогу, чем смогу
******

Группа: Админы
Сообщений: 2 786
Регистрация: 28-05-04
Из: Москва
Пользователь №: 25



Ради интереса, можете выложить кусок сишного исходника с описанием того, что получается после оптимизации? Если не затруднит


--------------------
С уважением,
Ваган Саруханов
Проекты|Форум|Facebook|Linkedin
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Nov 30 2005, 09:51
Сообщение #7


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Если выделенную функцию обьявить static, то она будет инлайниться в то место откуда она вызвана (если это место одно и в одном файле с самой функцией).
При этом уровни оптимизации можно будет для выделенной функции задавать любые отличные от основной.
Go to the top of the page
 
+Quote Post

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

 


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


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