Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Cамое простое - разбор пришедшей от PC команды (одной из, например, 100). Разбор чарез switch или if-else - долгий и неопрделен по времени, а через массив указателей - сразу.
Отправлено
Quasy
07 мая 2007 г. 17:33
В ответ на:
Кто силен в сях - в какой ситуации кроме рестарта может пригодиться вызов функции по указателю?
отправлено 1111 07 мая 2007 г. 17:08
Составить ответ
|
Вернуться на конференцию
Ответы
Непонял - это как? Действительно у меня как правило ситема на свитчах. Я всю жизнь считал, что самый что ни на есть прогрессивный подход.
—
1111
(07.05.2007 17:36:17
86.57.155.1
,
пустое
)
Вполне прогрессивный. Компилятор подменяет проверку условий на табличный вызов функции при высоком уровне оптимизации и большом количестве case.
—
Vladimir Ljaschko
(07.05.2007 17:58:10
194.158.204.49
,
пустое
)
У IAR для AVR аж 3 варианта обработки свичей. По дефолту не табличный
—
Vit
(07.05.2007 19:28:13
83.170.240.226
,
пустое
)
Ну как: код пришедшей команды - это индекс массива указателей на ф-цию. Самое простое дело(+).
—
Quasy
(07.05.2007 17:43:16
80.243.9.34
, 440 байт)
Ух-ты круто. Спасибо, очень красиво.
—
1111
(07.05.2007 18:01:16
86.57.156.179
,
пустое
)
Дык, это самый что нинаесть универс. метод. Часто делаю стек на клаву при приёме кода команды и вперёд!
—
Макаров
(07.05.2007 18:39:37
89.113.48.3
,
пустое
)
Побегу срочно переделывать приложеннице по обмену с хостом. Дочего ж си прекрасен. В своем роде стихи писать можно.
—
1111
(07.05.2007 18:04:38
86.57.156.179
,
пустое
)
Гы Си это Илюзия АСМа в АСЕМЕ есть команда ijamp <- для АВРа конечно к примеру.
—
PeterD
(07.05.2007 20:55:53
87.117.169.236
,
пустое
)
Скорее icall
—
VasilyS
(07.05.2007 21:55:35
80.92.96.25
,
пустое
)
Да! Давненько не баловались тут :ASM vs C! :-)..... Хо АСМ это Илюзия машинных кодов :) Иной компилятор в силу неукоснительного букета факторов и алгоритмов оптимизации ТАК упресует код, что ...(+)
—
Макаров
(07.05.2007 21:36:21
89.113.48.3
, 239 байт)
Только это самый простой случай. Имейте в виду, все указатели дожны иметь одинаковый тип(+)
—
Quasy
(07.05.2007 18:19:23
80.243.9.34
, 550 байт)
Прогрессивный с точки зрения борцов за читабельность, переносимость и прочую х-ню из подобных мешающих разработке. А самый качественный (т.е. наименее ресурсоемкий) способ - как правило именно таблица переходов (указателей на ф-ции).
—
SM
(07.05.2007 17:40:20
80.92.255.53
,
пустое
)
За читабельность при табличном вызове еще нужно побороться - поискать наиболее удобный путь определения массива.
—
Павлов
(07.05.2007 20:09:47
194.158.204.49
,
пустое
)
Можно конечно, но зачем? Это если только нужда заставит кому-то проект передавать.
—
SM
(07.05.2007 20:33:35
80.92.255.53
,
пустое
)
(философски) жизнь идет, и ты уже другой человек, не тот, что вчера...
—
Павлов
(07.05.2007 20:47:0
194.158.204.49
,
пустое
)
Без философии. Если уже склероз, но еще занимаетесь программированием, то что-то не так в консерватории :) :)
—
SM
(07.05.2007 21:37:18
80.92.255.53
,
пустое
)
Ответ: Так и есть.
—
Artem-1.6E-19
(07.05.2007 17:39:19
91.124.19.237
,
пустое
)
А в смысле создать структуру из кода команды и указателя на функцию выполнения команды или массив указателей на функцию выполнения, индексоком которого является команда?
—
1111
(07.05.2007 17:38:22
86.57.155.1
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 69:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru