Disasm Идея

Тема в разделе "WASM.RESEARCH", создана пользователем khv_test, 15 янв 2009.

  1. khv_test

    khv_test New Member

    Публикаций:
    0
    Регистрация:
    30 июн 2004
    Сообщения:
    135
    Копался в своих старых лабах с интитута и наверяло.
    Если кто к курсе про языки программирования и грамматики например:
    http://ru.wikipedia.org/wiki/Контекстно-свободная_грамматика или другие типы

    Встречели ли где нить дисасм основанный на этой теме а НЕ на таблицах?
    Если нет то усть идею что можно будем построить уникальный диссасм. Как вам идея?

    пример по типу
    <префикс> = 0x02,0x04,0x08,0x10,0x20,0x40
    <imm> = imm8,imm16,imm32;
     
  2. meduza

    meduza New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    212
    Не уверен, что инструкции x86 можно описать КС-грамматикой, уж очень много там ньюансов и костылей. А если и можно, то получившийся дизассемблер будет большим и медленным. Через таблицы, имхо, идеальный подход.
     
  3. s0larian

    s0larian New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    489
    Адрес:
    Крыжёпполь
    khv_test, таблица опкодов - аналогия recursive decent parser-a. То есть, тут просто не нужет LR/LALR parser с граматикой. Т.к. "язык" простой, то не нужны shift/reduce операции в которых нуждаются сложные парсеры. Не помню чичас, но есть термин для подмнодества языков грамитики которых пожно парсить используя recursive decent подход (итуитивно-понянтый, слева направо смотря на след. символ)
     
  4. skomarov

    skomarov New Member

    Публикаций:
    0
    Регистрация:
    14 май 2008
    Сообщения:
    389
    khv_test
    Надо взять идею да реализовать, а там сам увидишь.
     
  5. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Я видел дизассемблер, написанный на yacc, кажется. Внимательно не смотрел, и где лежит не помню :). Нашел в гугле недавно. Но сам факт такого дизассемблера имеет место быть.
     
  6. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Я делал примитивные не для X86 архитектуры, но всеже. Так вот. Плюсы ?
    Но минусы сразу просвечиваются:
    1) Громоздкость конечного кода-бинарника-результата
    2) Тормазнутось выбора соотношений опкод-инструкция по сравнению с табличным.
    3) Следует из первых двух минусов - его область применения далеко неочевидна.
     
  7. khv_test

    khv_test New Member

    Публикаций:
    0
    Регистрация:
    30 июн 2004
    Сообщения:
    135
    Thanx2All за обсуждение ведем его дальше.

    - По скорости работы это может быть меньше чем табличный зато правильность работы 100%.
    - Размер кода это под вопросом, например можно в yacc написать потом парсер свой сделать, там оптимизировать можно много чего по С-шному коду думаю.

    Тут еще вопрос возник, по поводу генерации кода по грамматикам ака создание полиморфного кода на основе "базовых" грамматик ( т.е. преведенных уже к канонической форме или как там). Подскажите, не помню из курса, возможно ли генерация наоборот избыточности, чтобы добится собственно эффекта?!
     
  8. khv_test

    khv_test New Member

    Публикаций:
    0
    Регистрация:
    30 июн 2004
    Сообщения:
    135
    Кому интересно, вот новая статья по теме. Автор Pawa, Январь 2009

    Полиморфный генератор и детектор на основе формальных грамматик и конечных автоматов
    h++p://vx.netlux.org/lib/vpa00.html