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

 
 
> Оптимизация switch?
1eXX
сообщение Oct 7 2008, 18:39
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 15-06-08
Из: Кировская слобода
Пользователь №: 38 298



Привет народ!
Посоветуйте, как можно создать таблицу переходов для оптимизации switch (case-ов за сотню)?
"__even_in_range" в данном случае не очень универсален и ограничен 30 переходами.
Заранее благодарен за любую идею.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
1eXX
сообщение Oct 8 2008, 07:52
Сообщение #2





Группа: Новичок
Сообщений: 5
Регистрация: 15-06-08
Из: Кировская слобода
Пользователь №: 38 298



Цитата(plombir @ Oct 8 2008, 08:09) *
А вот поймёт ли компилятор указатель на метку (как при goto), не пробовал. Но команда "Indirect Jump to (Z)" у AVR есть.
Хорошая мысль, да, вот только с меткой проблемы. Никак не удается получить ее адрес, да и goto не желает иметь переменной в качестве аргумента :(


Цитата(Rst7 @ Oct 8 2008, 09:23) *
Чето вопрос не совсем ясен. IAR при больших свичах создает таблицу переходов. Самостоятельно. А вообще - код в студию.
Хорошо бы знать директиву, чтобы компилятор создавал эту таблицу всегда, а не когда ему вздумается. Дело в том, что задача критична ко времени отклика, где каждый тик на счету и хорошо бы и на малых switch-ах реализовать эти переходы.
Код больно длинен, а вообще тоже самое, что и любой свитч с кучей case-ов, ничего сверхестественного.
А какая грань, при которой он создает таблицу, не подскажете?

Цитата(MrYuran @ Oct 8 2008, 09:27) *
Откуда такие сведения?
У меня при "switch(__even_in_range( state,60 ))" компилятор говорит что большой код (свободной flash-памяти завались) и реализуй-ка ты на "switch(state)", с 58 все ок. Отсюда 30 case-ов. И потом условие, при которых используется __even_in_range, требует четных state-ов, а у меня какие попало, с интервалом (0-10000), вразброс.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Oct 8 2008, 11:22
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(1eXX @ Oct 8 2008, 10:52) *
А какая грань, при которой он создает таблицу, не подскажете?

Я сам создаю таблицу при количестве case'ов больше десятка.
Все равно код становится длинным и нечитаемым.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 1eXX   Оптимизация switch?   Oct 7 2008, 18:39
- - plombir   Попробуйте таблицей (массивом во flash) указателей...   Oct 8 2008, 04:09
- - Rst7   Чето вопрос не совсем ясен. IAR при больших свичах...   Oct 8 2008, 05:23
- - MrYuran   Цитата(1eXX @ Oct 7 2008, 22:39) "__...   Oct 8 2008, 05:27
|- - IgorKossak   Цитата(1eXX @ Oct 8 2008, 10:52) ...а у м...   Oct 8 2008, 08:06
|- - prottoss   Цитата(1eXX @ Oct 8 2008, 15:52) а у меня...   Oct 8 2008, 12:23
- - MrYuran   По-моему, switch-case в любом случае преобразуется...   Oct 8 2008, 08:04
- - 1eXX   Похоже одновременно изящного и эффективного решени...   Oct 8 2008, 09:49
|- - prottoss   Цитата(1eXX @ Oct 8 2008, 17:49) Похоже о...   Oct 8 2008, 10:51
- - 1eXX   Цитата(Dog Pawlowa @ Oct 8 2008, 15:22) Я...   Oct 8 2008, 11:58
|- - Dog Pawlowa   Цитата(1eXX @ Oct 8 2008, 14:58) Каким об...   Oct 8 2008, 13:12
|- - Сергей Борщ   Цитата(Dog Pawlowa @ Oct 8 2008, 16:12) К...   Oct 9 2008, 00:29
||- - Dog Pawlowa   Цитата(Сергей Борщ @ Oct 9 2008, 03:29) Д...   Oct 9 2008, 05:23
||- - Сергей Борщ   Цитата(Dog Pawlowa @ Oct 9 2008, 08:23) Т...   Oct 9 2008, 07:01
||- - Dog Pawlowa   Цитата(Сергей Борщ @ Oct 9 2008, 10:01) П...   Oct 9 2008, 08:24
|- - shasik   Цитата(Dog Pawlowa @ Oct 8 2008, 16:12) К...   Oct 10 2008, 18:09
- - 1eXX   Самое яблочко, Дог :beer:   Oct 8 2008, 17:42
- - Dog Pawlowa   Цитата(1eXX @ Oct 8 2008, 20:42) Самое яб...   Oct 8 2008, 18:02


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

 


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


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