может не совсем понял сути вопроса. наверно, настолько же перспективна, как и парадигма языков программирования, со всеми своими фичами и приемами. Собственно конечные автоматы и есть один из приемов, который который позволяет создать более лаконичный, интуитивно понятный и, в то же время, эффективный код. как я думаю.
вобщем идея switch-технологии в том что любой императивный алгоритм с циклами и ветвлениями может быть преобразован в алгоритм с одним циклом, одним switch'ем для выбора состояния и кучей if-ов для проверки входных данных, т.е. do switch (state) { state1: x=Input(...) if (x=Input1) {...; state=stateN } if (x=Input2) {...; state=stateM } ... state2: ... } while state !=final_state;
ну, можно и так, красивей, читабельней, чем если все сделать на ифах. Но при наращивании состояний наступит момент, когда оптимальней будет использовать таблицу переходов. Вобщем, это уже обсуждалось выше.
Мне идея условного исполнения отдельных команд очень нравится (с помощью префиксов условного выполнения), тем что в принципе сведение результата в отдельных случаях (оптимального кода) можно отложить. Вот например: Код (Text): ife eax, ebx: add eax, [0139000h + ebp] xor eax, edx ... mov [0139000h + ebp], eax При таком коде становится возможным прямое выполнение, вплоть до команды записи в память. Команда за префиксом условия выполнится безусловно в первой половинке регистра RAX, и безусловно не выполнится во второй половинке. Все последующие команды будут на обоих половинках выполняться, как это делается в случае технологии SIMD. К моменту записи в память, или просто выяснения "выполнилось условие или нет", процессор просто выставит нужную половинку регистра RAX, как рабочую в качестве EAX, и так ко всем регистрам общего назначения.
мм.... а ктонибудь вообще с автоматным программированием сталкивался? (http://ru.wikipedia.org/wiki/%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5) ЗЫ: речь идет не о том чтобы заменить кусок программы КА, а замене всей программы КА:
Сталкивался. Мы на таких автоматах много чего писали. А работали как интерпретаторы инструкций. А последовательность инструкций генерировалась ассемблерными 'db', переходы - 'dw' и т.д.