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

 
 
> Таблица переходов вместо Switch, Keil Си
AndreyS
сообщение Mar 23 2010, 15:28
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 235
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276



Добрый день.

Если я не первый раз поднимаю эту тему, то заранее извиняюсь (я не смог придумать поисковику удобоваримое слово для поиска. На void* или таблица вываливается куча страниц).

Хочу заменить конструкцию Switch case на таблицу переходов и все это на языке Си.

Как вызвать процедуру по адресу я знаю, вопрос как бы мне заполнить таблицу с 256 значениями.
На асме я это реализовывал так:
Сначала создавал массив адресов на обработчик default, а затем в другом инклюднике прописывал (переопределял по вычисленным адресам определенные обработчики) Вот так:
Код
COM_SN_WRITE     EQU    42h                    ; Команда записи SN
    ORG TABEL_COM+(COM_SN_WRITE*2)              ; тут умножаю на 2, так как храню адрес из 2-х байт, в Keil Си он 3-х байтовый
    DW SEND_COM_SN_WRITE                               ; Ну а тут собственно сам обработчик (процедура). Тут ее адрес


SEND_COM_SN_WRITE:
       RET


TABEL_COM это адрес таблицы
COM_SN_WRITE номер команды
SEND_COM_SN_WRITE адрес обработчика

Как бы мне теперь так же сделать на Си в Keil?

PS Работу switch в Keil я разобрал, он работает с таблицей не так как мне нужно (она все равно перебором просматривает всю свою таблицу).


--------------------
Удачи.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- AndreyS   Таблица переходов вместо Switch   Mar 23 2010, 15:28
- - aaarrr   Определите массив указателей на функции, например,...   Mar 23 2010, 15:43
|- - Dog Pawlowa   Кодtypedef void (*VECTORS)(); con...   Mar 23 2010, 16:30
|- - AndreyS   Цитата(Dog Pawlowa @ Mar 23 2010, 19:30) ...   Mar 23 2010, 19:10
|- - Dog Pawlowa   Цитата(AndreyS @ Mar 23 2010, 22:51) Меня...   Mar 23 2010, 19:25
||- - AndreyS   Цитата(Dog Pawlowa @ Mar 23 2010, 22:25) ...   Mar 23 2010, 19:59
||- - Dog Pawlowa   Цитата(AndreyS @ Mar 23 2010, 23:59) С ва...   Mar 23 2010, 20:07
||- - AndreyS   Цитата(Dog Pawlowa @ Mar 23 2010, 23:07) ...   Mar 23 2010, 20:41
||- - Dog Pawlowa   Цитата(AndreyS @ Mar 24 2010, 00:14) ага....   Mar 23 2010, 20:55
||- - AHTOXA   Цитата(AndreyS @ Mar 24 2010, 01:41) а ка...   Mar 23 2010, 21:54
||- - Dog Pawlowa   Цитата(AHTOXA @ Mar 24 2010, 01:54) Это о...   Mar 23 2010, 22:02
||- - RobFPGA   Приветствую! Цитата(AHTOXA @ Mar 24 201...   Apr 5 2010, 20:36
||- - dxp   Цитата(AHTOXA @ Mar 24 2010, 04:54) работ...   Apr 6 2010, 03:05
||- - AHTOXA   Цитата(dxp @ Apr 6 2010, 09:05) Код// при...   Apr 6 2010, 07:45
||- - dxp   Цитата(AHTOXA @ Apr 6 2010, 14:45) А чем ...   Apr 6 2010, 11:14
||- - AHTOXA   Цитата(dxp @ Apr 6 2010, 17:14) Вот зрась...   Apr 6 2010, 12:15
||- - dxp   Цитата(AHTOXA @ Apr 6 2010, 19:15) А ты х...   Apr 6 2010, 12:56
||- - AHTOXA   Цитата(dxp @ Apr 6 2010, 18:56) Главное, ...   Apr 6 2010, 17:57
||- - dxp   Цитата(AHTOXA @ Apr 7 2010, 01:12) Пришло...   Apr 7 2010, 03:51
||- - AHTOXA   Цитата(dxp @ Apr 7 2010, 10:06) Для new н...   Apr 7 2010, 04:07
||- - dxp   Цитата(AHTOXA @ Apr 7 2010, 11:22) Если n...   Apr 7 2010, 06:24
||- - AHTOXA   Цитата(dxp @ Apr 7 2010, 12:39) А тогда с...   Apr 7 2010, 07:51
||- - dxp   Цитата(AHTOXA @ Apr 7 2010, 15:06) Смысл ...   Apr 7 2010, 13:35
||- - AHTOXA   А, это конечно. Просто наличие new позволяет даже ...   Apr 7 2010, 13:44
||- - dxp   Цитата(AHTOXA @ Apr 7 2010, 20:59) Кодif ...   Apr 8 2010, 03:28
|- - AHTOXA   Цитата(AndreyS @ Mar 24 2010, 00:10) Меня...   Mar 23 2010, 19:38
|- - sonycman   Цитата(AndreyS @ Mar 23 2010, 23:10) опти...   Mar 27 2010, 05:48
||- - AndreyS   Цитата(sonycman @ Mar 27 2010, 09:48) Как...   Mar 29 2010, 08:32
|- - defunct   Цитата(AndreyS @ Mar 23 2010, 22:10) Тепе...   Apr 4 2010, 23:56
|- - Dog Pawlowa   Цитата(defunct @ Apr 5 2010, 02:56) А что...   Apr 5 2010, 10:24
|- - defunct   Цитата(Dog Pawlowa @ Apr 5 2010, 13:24) Я...   Apr 6 2010, 01:40
|- - Dog Pawlowa   Цитата(defunct @ Apr 6 2010, 04:40) А для...   Apr 6 2010, 07:02
- - baralgin   Цитата(Dog Pawlowa @ Mar 23 2010, 18:30) ...   Mar 23 2010, 17:08
|- - Dog Pawlowa   Цитата(baralgin @ Mar 23 2010, 20:08) По ...   Mar 23 2010, 17:45
|- - zltigo   Цитата(baralgin @ Mar 23 2010, 20:08) По ...   Mar 23 2010, 17:58
- - baralgin   Dog Pawlowa, zltigo, Спасибо, буду знать, а то бол...   Mar 23 2010, 19:18


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

 


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


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