Нужны FASM тестинговые листинги для проверки ВСЕХ опкодов x86

Тема в разделе "WASM.ASSEMBLER", создана пользователем VaStaNi, 23 мар 2011.

  1. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    Многоуважаемый ALL! Просьба помочь.
    Суть в том, что если Вы портировали, допустим FASM или разработали свой аналогичный компилятор... то возникает потребность и както проверить КОРРЕКТНОСТЬ выходного результата для всех инструкций существующих на данный момент допустим, или данной версии FASM.
    Так вот. Может кто нибудь занимался и подбросит набранные ТЕСТОВЫЕ листинги, может есть характерные ASM листинги тянущие характерные некорректности компиляции, ошибочные компиляции...
    Влом самому набирать тупо сочиняя комбинаторность, тем более, что глубинное изучение опкодов их типаж, характерности... не моя стихия.
    Хотелось бы проверить поблочно, порежимно, поэтапно так сказать и не тупой кучей.
    Корректность компиляции бинари кода планирую проверять при помощи простого бинари сравнения результата от оригинального FASM компилятора и того, что выплевывает нечто моё слепленное...
     
  2. s_d_f

    s_d_f New Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    342
    Насколько мне известно ассемблерных трансляторов работающих без ошибок в инструкциях не существует. Везде что-то да найдётся.

    Тогда ничего не получиться. Довольсвоваться будешь некоторым достаточным уровнем КОРРЕКТНОСТИ.

    Сам пробовал набрать листинг, но потом передумал. Уж слишком это долго.
     
  3. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    s_d_f, спасибо. Посмотрел, ужаснулся...
    это же теория вероятности какая то получается... неребрать совсем все нереально, хотя может есть программы генератор-автомат для тест-листингов, как просто списки инструкций, опкодов проверить... вот подумалось в эту сторону.
    Не верится, что изобретатели всяческих компиляторов не ставили перед собой такую или подобную задачу, это просто я не в курсе...
     
  4. s_d_f

    s_d_f New Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    342
    В основном тщательно тестируют по одной инструкции, но проблема в том, что количество этих инструкций в x86 всё множится и множится (прямо как кроликии:)).
    Написать ассемблер для процессоров 8086/386/Pentium 4 с SSE и FPU/x86-64 с AVX - это по сложности 4 сильно отличающиеся задачи. Причём для x86-64 всё совсем уже критично.
     
  5. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Здесь лежат файлы, теоретически содержащие все инструкции во всех формах на какой-то момент времени. Файл довольно старый, уже появились новые инструкции, но для тестирования все равно может пригодиться.
     
  6. ntkernelspawn

    ntkernelspawn New Member

    Публикаций:
    0
    Регистрация:
    17 дек 2010
    Сообщения:
    61
    Может имеет смысл взять готовый дизассемблер и ему передавать все опкоды 00 - 00 00 00 00 .. .. ? коректные сбрасывать в файл ..
     
  7. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    Mika0x65, спасибо за участие, но сами инструкции и в FASM сорцах есть. Вопрос касается, так сказать работы с ними, т.е. правильности преобразования
    от мнемоники до опкодного представления в бинари.
    Скомпилил что то и вроде все так, а соответствует ли это записанному в мнемонике не ясно. Не пересматривать же дебаг-листинг.
    Поэтому более верным посчитал сверку двух файлов бинари==бинари, если нет, то ищем где, разбираемся, анализируем, устраняем. Где то так.
     
  8. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    VaStaNi
    Ну, идея была такая: взять бинарный файл, дизассемблировать его (потребуется некоторая возня с IDA, например), затем сгенерировать .asm файл и натравить на .asm файл ассемблер. Если на выходе будет такой же бинарный файл, значит все Ок. Могут вознивнуть проблемы с порядком операндов (бит направленности и порядок в MODRM байте), но как еще более автоматизированно сделать, я не знаю.
     
  9. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    А если не будет - то мы ничего не узнали.
    Смысл тогда в таких тестах?
    Тупое бинарное сравнение ничего не даст, т.к. для многих мнемоник есть 2 и больше вариантов кодирования.
    Причём все они правильные.
     
  10. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    Не упускаем изначально, что речь шла как бы о FASM и то что от него получилось, т.е. идейно должно быть все одновалентно, в плане их результатов.
    тогда конкретный offset на бинарную проблему четко ее (проблему) выявляет.
     
  11. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    какой бинарный файл? И почему именно его? Это тот что 14метров по ссылке что ли? Или я не то понимаю?
     
  12. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    VaStaNi
    Да, его. Почему именно
    его -- у меня просто другого ничего нет для тестирования моего дизассемблера :).

    cppasm
    Ну, не сказать что прямо совсем для многих, но руками, наверное, да, такое тяжело будет потом разобрать.
     
  13. s_d_f

    s_d_f New Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    342
    Задача эта явно не из простых. Я уже давно пишу ассемблер и пришел к выводу, что для отлова ошибок, в нём должен быть синтаксис по меньшей мере эпиморфным, что-б не путаться в разных вариантах опкодов для одной и той-же инструкции.
     
  14. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    Mika0x65, спасибо заюзаю, т.к. другого кандидата не вижу. Отличная вообще и большая работа, поздравляю! Впечатляет... за две недели... - мои восхищения, однозначно!
    s_d_f
    точно, можно еще и переключатель типа показать говорящий: "в данном коде используется ...то то и то то" .
     
  15. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    VaStaNi
    такая темка подымается примерно один или два раза в год, и насколько помню всего набора опкодов так никто и не выкладывал :dntknw:
     
  16. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    VaStaNi
    Не совсем понял, что именно за две недели -- но файл с инструкциями сгенерировал не я :). Я его когда-то на wasm же и подобрал и зачем-то сохранил (хотя обычно этого не делаю). Как оказалось, не зря :).
     
  17. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
     
  18. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    так вот странно это видеть! Куда только гурманы дзена смотрят? =)
    Казалось бы те, кто "копается в потрохах", давно все выпотрошить должны бы "и причесать" пусть со статьями или teamОМ в совокупном итоге, ан нет этого получается. А может самый знающий еще ветку не читал? Вот надега есть какая еще. Пока вот рецепт один дизаасмить эти 14мБ, чтобы асмить затем в FASM "в два ствола", так сказать + сличать затем выход...
     
  19. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    VaStaNi
    Ключевое слово там -- "казалось" :). Думаю, что базу я описал за год, включая конвертер "XML файл -> таблицы для дизассемблера". Писалось, правда, по вечерам и с перерывами, но все же довольно долго.
     
  20. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    =) =) =) а слона я таки пропустил! Факт.