спецификации архитектуры x86 - PullRequest
0 голосов
/ 03 января 2011

Я хочу написать совместимый с IBM-PC эмулятор с C ++ в качестве учебного проекта, и для правильной эмуляции процессора 8086 нужна информация о том, как он работает.

Некоторые примеры информации, которая мне понадобится:

  • Как структурирован код (размер отдельных инструкций, как они распакованы и т. Д.)

  • Точная работа регистров

  • Подробная информация о том, что делают отдельные инструкции (например, мне недостаточно описания по умолчанию для команды CMP «Сравнивает ... и ... и устанавливает флаги»)

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

Может быть, вы можете мне помочь?

Ответы [ 4 ]

3 голосов
/ 03 января 2011

Возможно, вы захотите перейти прямо к источнику:

http://download.intel.com/design/intarch/manuals/24319101.pdf

1 голос
/ 03 января 2011

sandpile.org - хорошее место, если вам нужна информация о формате кодировки кодов операций x86.Вся информация организована в виде таблиц для удобства поиска.

0 голосов
/ 03 января 2011

Искусство ассемблера, Рэндалл Хайд.В нем есть пара разделов о том, как работает процессор, например:

Глава третья: Организация системы

  • 3.0 Обзор главы
  • 3.1 Основные компоненты системы
  • 3.1.1 Системная шина
  • 3.1.1.1 Шина данных
  • 3.1.1.2 Шина адреса
  • 3.1.1.3Шина управления
  • 3.1.2 Подсистема памяти
  • 3.1.3 Подсистема ввода-вывода
  • 3.2 Синхронизация системы
  • 3.2.1 Системные часы
  • 3.2.2 Доступ к памяти и системные часы
  • 3.2.3 Состояния ожидания
  • 3.2.4 Кэш-память
  • 3.3 The 886, 8286, 8486и 8686 «гипотетических» процессоров
  • 3.3.1 Регистры ЦП
  • 3.3.2 Арифметико-логический блок
  • 3.3.3 Модуль интерфейса шины
  • 3.3.4 Блок управления и наборы инструкций
  • 3.3.5 Набор инструкций x86
  • 3.3.6 Режимы адресации на x86
  • 3.3.7 Кодирование x86 Instructions
  • 3.3.8 Выполнение пошаговой инструкции
  • 3.3.9 Различия между процессорами x86
  • 3.3.10 Процессор 886
  • 3.3.11 Процессор 8286
  • 3.3.12 Процессор 8486
  • 3.3.12.1 Трубопровод 8486
  • 3.3.12.2 Задержки в трубопроводе
  • 3.3.12.3 Кэш, очередь предварительной выборки и 8486
  • 3.3.12.4 Опасности на 8486
  • 3.3.13 Процессор 8686
  • 3.4 В / В (ввод / вывод)
  • 3.5 Прерывания и опрашиваемый ввод / вывод
0 голосов
/ 03 января 2011

Вы можете посмотреть руководства по архитектуре Intel: http://www.intel.com/products/processor/manuals/ (примечание: ссылка Отавио лучше, поскольку она идет к более старому руководству)

Конечно, они включают спецификации для многих инструкций и функций, которых не было в 8086, но вы должны быть в состоянии пропустить новый материал.

Вы также можете посмотреть на Bochs , чтобы проверить вещи или получить некоторые идеи.

Наконец, если вы уже не совсем уверены, я бы рекомендовал начать с более простого (RISC) набора команд, такого как одна из архитектур MIPS. Режимы декодирования инструкций и адресации значительно менее сложны в типичной архитектуре RISC, чем в типичной архитектуре CISC.

...