Собираю логику команд X86

Тема в разделе "WASM.ASSEMBLER", создана пользователем MisterX, 16 фев 2010.

  1. MisterX

    MisterX New Member

    Публикаций:
    0
    Регистрация:
    16 фев 2010
    Сообщения:
    2
    Мне надо для создания дизассемблера, в точности знать состояние процессора серии X86 в результате выполнения большинства или даже всех возможных команд. К сожалению, в специальной литературе, точнее - той что доступна в интернет, многое упускается из виду.
    Есть ли у кого какие идеи чтобы создать такой документ по каждой команде, учитывая все возможные, либо наиболее критические состояния процессора.
    Я предполагаю, что есть возможность как-то автоматизировать процесс получения этих данных, выполняя каждую команду не реальном процессоре под отладчиком и перебором всех вариантов состояний. Заранее спасибо за помощь.
     
  2. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    удачи
     
  3. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Intel Manual + исходники открытых виртуальных машин с программной эмуляцией, типа Bochs. Для автоматизации можно научиться выдирать информацию из .pdf файлов (в Intel Manual описано состояния флагов, исключения и т.д.).
     
  4. Ox8BFF55

    Ox8BFF55 New Member

    Публикаций:
    0
    Регистрация:
    11 июл 2009
    Сообщения:
    181
    Эмулятор выполнения инструкций с заранее определенным состоянием процессора?
     
  5. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.622
    Адрес:
    Russia
    MisterX
    что упускается из виду ??? например ??? что за спец литературу вы читаете ??? комсомольскую правду что ли ??
     
  6. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    1. Цель обозначена:
    А на кой, простите, орган тела, дизассемблеру надо знать состояние процессора? Дизассемблер должен тупо перевести машинный код в текстовые мнемокоды, и отдать это пользователю. Есть более крутые варианты, но - они ЕСТЬ! их не надо создавать, ИДА должна удовлетворить любого.

    2.
    Это как это? И что имеется в виду? Флаги? содержимое регистров? Уверяю, что в специальной литературе (упомянутых уже Intel software developer manuals) есть все, что нужно, кроме разве что точного времени исполнения команд... которое тоже есть для оценочных прикидок, в виде таблицы латентностей в приложениях.

    3. Предположение
    просто великолепно. Это напоминает изучение процессора методом тыка мною лично в 8-м классе школы. Память от 0 до 6FFF заливается кодом 00, и запускается на выполнение с адреса 0. "РК86" виснет. Ресетим, заливаем 01, повторяем. На экране возникает мусор. Круто! :))))) Но пока я не прочитал некий минимум, дело все равно не пошло.
    Перебором каких состояний? Что в вашем понимании "состояние процессора"? Содержимое кешей включается? Модель-специфичные регистры? Управляющие? Стек? Регистры общего назначения? Или только флаги? Что значит "перебором ВСЕХ вариантов состояний"? Вы собираетесь одну и ту же команду выполнить 2^32 раз, каждый раз перед выполнением изменяя регистр флагов на 1? Или каждую команду 32 раза, обнуляя или выставляя по 1 биту в регистре флагов? Первое даст заведомо избыточную информацию, в которой вы утонете. Второе - неполную. И то, и другое - бесполезную. Это так, предположение, кстати... для случая, когда под состоянием процессора имелся в виду всего лишь регистр флагов :)))
     
  7. MisterX

    MisterX New Member

    Публикаций:
    0
    Регистрация:
    16 фев 2010
    Сообщения:
    2
    FatMoon :
    Да хоть в первом.

    Mika0x65 :
    Пробовал, не полностью подходит. Готовых исходников в тех сорцах нет, проще начать с нуля, как вы сказали - с ПДФ файла.

    Ox8BFF55 :
    Именно, для выполнения программы "всухую".

    Вобщем ПДФ файл и проверка перебором. Надо только автоматизировать процесс написанием парсеров.
     
  8. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Дерзайте. Вы конечно найдете пару опечаток, но к тому времени Интел успеет два новых поколения процессоров создать. В русском языке хороший термин есть : "мартышкин труд".
    Гораздо полезнее для вас подучится, если конечно вы еще молоды, и пойти на работу в Интел. И зарплата и польза обществу.
     
  9. PaCHER

    PaCHER New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2006
    Сообщения:
    852
    MisterX
    Может вы всетаки просветите что для вас означает состояние процессора?
    Ну и приведите хоть пару команд для которых нету в документации того ради чего вы собираетесь ее брутфорсить?
     
  10. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    673
    Ага, аналогично. В руках был только debug.exe, пока не попался Абель, нифига не понял.
    Однако кто-то (мыщь вроде) говорил что изучил асм с помощью debug. Честно - не верится.
     
  11. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    medstrax1
    Если это был _первый_ асм -- действительно не верится. Если же уже умел программировать на асмах для других процессоров -- тогда вполне.
     
  12. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    673
    Вряд ли крис тогда имел понятие о других процах/асмах. Мы с ним одногодки, поэтому могу предположить, что в конце 80-х начале 90-х, живя в деревне в краснодарском крае,ему вряд ли были доступны для изучения другие процы ;)
     
  13. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    medstrax1
    Не факт, не факт... Я вот с компутером впервые познакомился в... э... кажись, 1985-м (в школе), и к 1991-му знал уже 5 или 6 ассемблеров и примерно столько же ЯВУ (Бэйсик, Фортран, Кобол, Си и Паскаль точно, ПЛ/1 -- под вопросом).
     
  14. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    673
    Мм, могу только позавидовать, во второй половине 80-х найти 5 или 6 _разных_ процов - это непросто. Ну вы, как я понимаю, и несколько старше. У меня в то время были под рукой только калькуляторы типа МК-61 ;) Кстати - незаменимая вещь для изучения логики и оптимизации. Уложить в 105 ячеек нехилые алгосы - нужно оч постараться ;)
     
  15. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    medstrax1
    Насчёт калькуляторов абсолютно согласен с Вами. Если уж быть точным, я начинал с Б3-34 -- лет в 12, а может, в 11 отец подарил. Хотя считать в школе всегда считал в уме или на бумажке (типа, особо сознательный в этом плане был).

    Что же касается разных процов -- то никаких проблем тогда в этом как раз и не было. Советские клоны буржуйских машин на что? ;) В школе были "агаты" -- не шибко удачная, причём неполноценная копия Apple II с процессором 6502. Вскоре после этого смог добраться до СМ-4, а потом и СМ-1420 (в одном местном типа НИИ) -- архитектурно это клоны PDP-11 (кстати говоря, на них я впервые начал зарабатывать деньги -- в 15 лет устроился). Потом были "Роботрон-1715" (ГДРовская персоналка на Z80), всякие разные микропроцессорно-микроконтроллерные поделки (на советских аналогах 8080 и 8051), ну и, наконец, ЕС-1035 -- архитектурный клон IBM System/370. Вот сейчас подобное разнообразие фиг найдёшь, если не работаешь в области промышленной автоматизации или сам радиолюбительством не промышляешь -- ведь доступными простому смертному являются лишь ПК (зато доступными прямо дома, а не где-то в школе, институте или на производстве, как мне тогда).

    Кстати, об оптимизации. В "Мониторе" Apple II (некий аналог BIOS, объёмом аж 2 килобайта) вместились не только полезные подпрограммы ввода-вывода, но ещё и примитивный дизассемблер и отладчик. У меня чуть крыша не съехала, когда я пытался с ним разобраться (и разобрался-таки в конце концов), -- настолько "плотно" он написан. Аналогичный по функционалу монитор для 8080 (написанный на упомянутом Роботроне-1715, но с использованием команд только 8080, а не Z80) у меня занял что-то вроде 5 килобайт. Правда, там система команд менее удачная (недаром 6502 лёг позднее в основу Dendy), да и я не уделял много внимания оптимизации, а просто старался писать не слишком раздуто, но всё равно...