Как Делают Мнемоники команд Карты x86 Ассемблеров к Двоичным Машинным командам?

Мне интересно в письменной форме x86 ассемблер. Я задаюсь вопросом, что хороший путь к инструкциям по мнемосхеме блока карты x86 (использующий подобный Intel синтаксис) в соответствующие двоичные команды машинного кода.

11
задан mudge 3 May 2010 в 18:22
поделиться

3 ответа

Вы хотите понять физическое отображение мнемоник в машинный код? Если да, то в томах 2A и 2B справочных руководств Intel IA32/IA64 описан двоичный формат машинного кода x86.

На странице x86 instruction set page в Wikipedia есть компактный список всех инструкций, разделенных по времени их появления, что может помочь вам определить приоритеты, что нужно реализовать в первую очередь.

Однако, если вы спрашиваете о том, как разобрать текстовый файл с ассемблерным кодом, чтобы добраться до точки, где ваша программа могла бы начать писать машинный код, то вам в основном нужно понять, как написать компилятор. Инструменты lex и yacc - это хорошее место для начала, но если вы не знаете, как создать компилятор, вам также понадобится книга. Я думаю, что Dragon book - лучшая из них, но есть и множество других книг, которые вы можете использовать, у SO есть много рекомендаций.

10
ответ дан 3 December 2019 в 07:11
поделиться

Это просто прямое взаимно-однозначное сопоставление; в документации Intel описаны все инструкции и их кодировки. Вам нужно будет создать гигантскую таблицу поиска или что-то подобное, чтобы выполнить сопоставление и генерацию кода.

2
ответ дан 3 December 2019 в 07:11
поделиться

Для x86 это чертовски сложно. С приходом 32-битных процессоров стало немного менее сложно, но да. Все равно неприятно.

Возможно, вы захотите взглянуть на nasm ( http://www.nasm.us ). Это 32-битный ассемблер с открытым исходным кодом. Посмотрите, как они это делают. Или используйте его вместо этого. :)

5
ответ дан 3 December 2019 в 07:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: