Где бы почитать инфу про опкоды

Тема в разделе "WASM.ASSEMBLER", создана пользователем MaDF, 4 авг 2005.

  1. MaDF

    MaDF New Member

    Публикаций:
    0
    Регистрация:
    10 май 2005
    Сообщения:
    83
    Здравствуйте!

    Пишу некое подобие дизассемблера - мне нужно взять опр. количество байт, содержащих в себе команды ассемблера, но так чтобы не было перебора или недобора в байтах :P Не знаю, где бы нарыть инфу по структуре опкодов, как они составляются, чтоб все до бита? PS гугл язал, не нарыл ;)
     
  2. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"


    Бери по 15 байт, так как это предельная длина комманды.



    Инфа по структуре опкодов - intel.com



    Список опкодов с определениями их структуры - http://ms-rem.dot-link.net/files/pentium.rar
     
  3. warsem

    warsem Сеня

    Публикаций:
    0
    Регистрация:
    26 янв 2005
    Сообщения:
    170
    Адрес:
    Германия, NRW
    Синия книжка В.Юрова "Спец. справочник" содержит в себе пояснения к мнемоникам, но увы не ковсем. Електрическую версию не видел, а бумажную везде продают.
     
  4. cracker

    cracker New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2005
    Сообщения:
    20
    Ms Rem чет я не все команды там нашел, в файле по твоей сцылке. некоторы[ "извращенных" команд не увидел, например push [reg1+reg2*4+const]
     
  5. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"




    Смотри внимательно: FF /6 PUSH r/m32

    А "извращенная" адресация задается с помощью байтов MOD r/m и SIB, которые к опкоду никакого отношения не имеют.

    А у меня там только таблица опкодов (которая как раз нужна при написании дизассемблера), а адресация всегда разбирается по общим правилам.

    Смотри http://ms-rem.dot-link.net/files/cadt.rar
     
  6. MaDF

    MaDF New Member

    Публикаций:
    0
    Регистрация:
    10 май 2005
    Сообщения:
    83
    -> Бери по 15 байт, так как это предельная длина комманды.

    а вдруг захвачу часть лишней команды или "недохвачу" часть последней? А за сцылки спасибо огромное, буду смотреть
     
  7. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"


    Берешь 15 байт, дизассемблируешь их, когда длина определена, то уже ясно с какого места брать следующие.

    А недохватить просто невозможно, так как комманд длиннее 15 байт не бывает.
     
  8. MaDF

    MaDF New Member

    Публикаций:
    0
    Регистрация:
    10 май 2005
    Сообщения:
    83
    ааа ты про это ;) ну дык понятно... Я просто думал чтобы копировать допустим первые 30 байт (мне больше и не надо) и дизасмить их... :dntknw: глянул в ссылки - не то. Что-то никак не могу найти чтобы прям каждый бит команды описывался! c intel.com скачал "IA-32 Intel Architecture Software Developer’s Manual" - только там описание команд... и ничего :dntknw:(
     
  9. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    Хорошо поищи в яндексе. Я там много чего находил :)

    Например есть статья Криса на эту тему. Описано там неплохо, но полно ошибок :dntknw:
     
  10. cracker

    cracker New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2005
    Сообщения:
    20
  11. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"


    А ты проверь на практике. Приписывай к комманде префиксы до тех пор, пока она не станет генерировать #UD
     
  12. dermatolog

    dermatolog Member

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    406
    Адрес:
    Екатеринбург
    2 warsem:



    У меня второе издание справочника - описание есть ко всем командам, включая FPU, SSE и SSE2 ...



    P.S. Кстати очень рекомендую ...
     
  13. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    MaDF

    > скачал "IA-32 Intel Architecture Software Developer’s Manual" - только там описание команд... и ничего :dntknw:(



    Как это ничего :dntknw:(

    Открываешь vоlume 2: Instruction Set Reference и для общего развития изучаешь раздел Instruction format. Потом берешь для примера инструкцию ADD и видишь обозначения типа 81 /0 id ADD r/m32,imm32 или 01 /r ADD r/m32,r32. Идешь в начало раздела в Interpreting..\Instruction format\Opcode column и смотришь что скрывается за /0, /r и id. Например, 81 /0 id означает опкод = 81h, /0 - поле reg байта ModR/M = 0, id - в конце инструкции идет непосредственный операнд dword. Полный формат инструкции будет определяться байтом ModR/M - кодировку смотрим в таблице в разделе ModR/M and SIB bytes. При reg=0 всего возможно 32 варианта, включая разные регистры и типы адресации памяти. Соответсвенно в зависимости от ModR/M формат и длина инструкции может быть разной (в данном примере 6, 7, 8, 10 или 11 байт без учета префиксов).
     
  14. MaDF

    MaDF New Member

    Публикаций:
    0
    Регистрация:
    10 май 2005
    Сообщения:
    83
    leo вах вах это оно :)) спасибо
     
  15. cracker

    cracker New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2005
    Сообщения:
    20
    есть какая-нить инфа может, какие команды запрещены в ring3. был бы очень благодарен
     
  16. MaDF

    MaDF New Member

    Публикаций:
    0
    Регистрация:
    10 май 2005
    Сообщения:
    83
    гм... почитав описание, сделал вывод что по-любому нужна таблица с опкодами команд... ведь не зная, какой это опкод, не будешь знать какие у данной конструкции операнды, так?
     
  17. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    Конечно таблица нужна. Ты бы сначала исходники других дизассемблеров посмотрел, прежде чем за свой браться.
     
  18. Nimnul

    Nimnul New Member

    Публикаций:
    0
    Регистрация:
    21 фев 2005
    Сообщения:
    136
    Адрес:
    не Китай
    Интересно неужели нет на русском языке об архитектуре команд и о назначении + кратке описание?
     
  19. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Юров Спец. Справочник.
     
  20. _Supervisor_

    _Supervisor_ Денис

    Публикаций:
    0
    Регистрация:
    10 авг 2005
    Сообщения:
    4
    Адрес:
    Москва