OSDev http://osdev.su/ |
|
Дизассемблирование кода http://osdev.su/viewtopic.php?f=5&t=363 |
Страница 1 из 1 |
Автор: | qeos [ 26 дек 2010, 03:04 ] |
Заголовок сообщения: | Дизассемблирование кода |
Нашел статью и перевел ее. Она выглядит как вводная в архитектуру команд процессора x86. Если кому интересно то прочесть ее можно тут http://qeos.ru/?page=disassemblirovanie_koda&nav=1 Так же меня интересует: кто-нибудь уже делал дизассемблировал? Например для дебага из консоли при написании ОС.. Поделитесь толковыми ссылками и опытом. |
Автор: | SII [ 26 дек 2010, 12:26 ] |
Заголовок сообщения: | Re: Дизассемблирование кода |
В "тупом" дизассемблировании (просто перевод машинного кода в мнемоники команд, имена регистров, адреса и константы в шестнадцатеричном или каком другом удобочитаемом виде) абсолютно ничего сложного нет; даже для такой идиотской системы кодирования команд, как на ИА-32, достаточно лишь внимательно изучить это самое кодирование. Вот интеллектуальные дизассемблеры типа ИДА Про -- это действительно сложно, но для отладки они и не нужны. Пы.Сы. А в статье отсутствуют сведения о 64-разрядном режиме; по 16-разрядному, кажется, тоже нет. В своё время формат команды ИА-32 я расписал на вике, опираясь на интеловский мануал. |
Автор: | qeos [ 06 янв 2011, 06:05 ] |
Заголовок сообщения: | Re: Дизассемблирование кода |
SII писал(а): В "тупом" дизассемблировании (просто перевод машинного кода в мнемоники команд, имена регистров, адреса и константы в шестнадцатеричном или каком другом удобочитаемом виде) абсолютно ничего сложного нет; даже для такой идиотской системы кодирования команд, как на ИА-32, достаточно лишь внимательно изучить это самое кодирование. Вот интеллектуальные дизассемблеры типа ИДА Про -- это действительно сложно, но для отладки они и не нужны. Пы.Сы. А в статье отсутствуют сведения о 64-разрядном режиме; по 16-разрядному, кажется, тоже нет. В своё время формат команды ИА-32 я расписал на вике, опираясь на интеловский мануал. народ говорит IA32 не самое уродское.. статья нужна была просто для общего понимания. сейчас пишу чтото типо отладчика, возникает много других вопросов. например, я эмулирую полностью процессор х86, но если с командами нашел достаточно простой алгоритм, то для установки соответствующих флагов приходится делать обычный перебор вариантов установки (выглядит не эстетично:). или, например, чтото не пойму пока как процессор знает какое значение у тебя в регистре, signed или unsigned.. про х64 еще не разбирался но судя по документации интела не очень будет отличаться. ситуация, видимо, аналогична режиму процессора 16/32. т.е. если проц в режиме 32 бит то команда "mov eax, 0", а если в 16 то "mov ax, 0". код команды один и тотже.. |
Автор: | SII [ 06 янв 2011, 06:32 ] |
Заголовок сообщения: | Re: Дизассемблирование кода |
Плохо двоичную арифметику знаете, так что сначала с ней досконально разберитесь, а потом уж глубоко копайте. Для сложения-вычитания нет абсолютно никакой разницы, знаковые числа или беззнаковые. Разница есть для умножения и деления, но там и команды различные. С 64-разр сложнее, чем при переходе с 16- на 32-разрядную архитектуру. Ну а по уродству... Я долгое время был убеждён, что большего идиотизма, чем 8086 и его развития в виде ИА-32, в природе не существует, но недавно столкнулся с 16-разрядными ПИКами и понял, что глубоко заблуждался. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |