Копался в своих старых лабах с интитута и наверяло. Если кто к курсе про языки программирования и грамматики например: http://ru.wikipedia.org/wiki/Контекстно-свободная_грамматика или другие типы Встречели ли где нить дисасм основанный на этой теме а НЕ на таблицах? Если нет то усть идею что можно будем построить уникальный диссасм. Как вам идея? пример по типу <префикс> = 0x02,0x04,0x08,0x10,0x20,0x40 <imm> = imm8,imm16,imm32;
Не уверен, что инструкции x86 можно описать КС-грамматикой, уж очень много там ньюансов и костылей. А если и можно, то получившийся дизассемблер будет большим и медленным. Через таблицы, имхо, идеальный подход.
khv_test, таблица опкодов - аналогия recursive decent parser-a. То есть, тут просто не нужет LR/LALR parser с граматикой. Т.к. "язык" простой, то не нужны shift/reduce операции в которых нуждаются сложные парсеры. Не помню чичас, но есть термин для подмнодества языков грамитики которых пожно парсить используя recursive decent подход (итуитивно-понянтый, слева направо смотря на след. символ)
Я видел дизассемблер, написанный на yacc, кажется. Внимательно не смотрел, и где лежит не помню . Нашел в гугле недавно. Но сам факт такого дизассемблера имеет место быть.
Я делал примитивные не для X86 архитектуры, но всеже. Так вот. Плюсы ? Но минусы сразу просвечиваются: 1) Громоздкость конечного кода-бинарника-результата 2) Тормазнутось выбора соотношений опкод-инструкция по сравнению с табличным. 3) Следует из первых двух минусов - его область применения далеко неочевидна.
Thanx2All за обсуждение ведем его дальше. - По скорости работы это может быть меньше чем табличный зато правильность работы 100%. - Размер кода это под вопросом, например можно в yacc написать потом парсер свой сделать, там оптимизировать можно много чего по С-шному коду думаю. Тут еще вопрос возник, по поводу генерации кода по грамматикам ака создание полиморфного кода на основе "базовых" грамматик ( т.е. преведенных уже к канонической форме или как там). Подскажите, не помню из курса, возможно ли генерация наоборот избыточности, чтобы добится собственно эффекта?!
Кому интересно, вот новая статья по теме. Автор Pawa, Январь 2009 Полиморфный генератор и детектор на основе формальных грамматик и конечных автоматов h++p://vx.netlux.org/lib/vpa00.html