![]() |
|
|
![]()
|
|
| strife |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 12.5.2011 Репутация: нет Всего: нет |
Здравстуйте. Прошу помощи, вот задачка.
Написать программу дисассемблирования в оперативной памяти команды вычитания sub. Информацию записать в файл. Программа дисассемблирования состоит в следующем: указать адрес оперативной памяти для попытки представить в виде символьной команды подходящее число байт. Если имеются альтернативы, то выдавать их. По крайней мере должно быть две программы: основная, которая вводит и выводит и обращается к подпрограмме дисассемблирования, а также подпрограмма дисассемблирования. Заранее благодарен! Это сообщение отредактировал(а) strife - 12.5.2011, 19:25 |
|||
|
||||
| izl3sa |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 25.6.2010 Репутация: нет Всего: нет |
Вкратце
в общем виде инструкция процессора имеет следующий вид ([] помечены части, которые не всегда присутствуют) [префиксы] код операции [байт modrm] [байт sib] [offset32][imm32] modrm и sib участвуют в механизме адресации операндов команды. modrm состоит из трех частей Режим (mod) - определяет значение поля rm Поле reg - В большинстве случаев здесь записан регистр, но бывает, что сюда кладется расширение опкода Поле rm - адресует регистр или ячейку памяти. Если нужна косвенная индексно-базовая адресация (и не только =) ) здесь указывается присутствие байта sib sib = scale index base Применяется для адресации типа [eax + 4*ebx], также, чтобы адресовать память через esp. Формат сам посмотришь. Итого тебе нужно будет реализовать парсер modrm и sib + обработку префиксов. В зависимости от них могут различаться размерность imm и оффсетов, их тоже смотришь и выводишь текстовое представление. Команда sub имеет несколько кодов операции 0x28-0x2b - стандартные команды память-регистр, в поле reg - регистр 0x2c, 0x2d - оптимизированные коды под eax/al, modrm нет 0x80-0x82, modrm.Reg = 5 - память-непосредственное значение ссылки http://ref.x86asm.net/coder32.html http://wasm.ru/series.php?sid=16 ну и маны интела в помощь |
|||
|
||||
![]()
|
| Правила форума "Asm для начинающих" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm для начинающих | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |