[an error occurred while processing this directive] [an error occurred while processing this directive]
Ответ: Ваш вариант позволяет
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Bill 16 мая 2002 г. 11:42
В ответ на: Ответ: отправлено Илья 16 мая 2002 г. 10:45

реализовать ветвление только в случаях, когда значения констант расположены в узком дипазоне, скажем 1.2.3 или 'Z'.'X'.'Y'.'W'. Число констант и их порядок не важны, важно что их значения отличаются на 1. В этом случае Ваш вариант на ассемблере сработает, только после загрузки переменной W, нужно вычесть из него константу с наименьшим значением. Но что будет, если значения констант будут отличаться не на 1, а, скажем. на 5, 10, а то и в несколько раз? Вариант на C я во внимание не принимаю, т.к. компиляторы подобную оптимизацию не производят и код в результате трансляции получается более громоздким, во всяком случае это справедливо для IAR PIC С. Проверял в свое время. Верное решение приведено в другом ответе. Код получается несколько замысловатым, но когда требуется сэкономить пару другую команд или микросекунд, на удобочитаемость кода внимания уже не остается. Спасибо.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru