дорожная карта набора инструкций x86 - PullRequest
7 голосов
/ 11 января 2010

Я просто касаюсь поверхности набора команд x86 после длительного периода программирования высокого уровня. Прошло около 20 лет, когда я впервые прочитал о программировании на ассемблере x86, и от моих поисковиков я просто заблудился с множеством ссылок на наборы команд; от тех, которые смешивают новые поколения процессоров (286, 386, 486 ...) с другими, которые добавляют более новые инструкции x86. Не говоря уже о вариациях AMD.

Поскольку я планирую создать загрузчик, моей первой мыслью было полное соответствие со «стандартным x86», но я не могу понять, где он находится и даже существует ли он где-либо.

Даже документация Intel, похоже, идет по тому же пути и, как сказал другой, «нам нужна стандартизация набора команд x86, эволюция кодов операций хаотична».

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

Ответы [ 2 ]

5 голосов
/ 11 января 2010

Исторически сложилось так, что x86 очень обратно совместим. x86-64 отбросил некоторые очень старые инструкции (например, инструкции BCD), но маловероятно, что такого рода изменения произойдут снова (по крайней мере, до тех пор, пока не произойдет нечто огромное, когда произойдет переход 64-битного адресного пространства).

Если вы хотите, чтобы ваш код работал практически на всех процессорах x86, придерживайтесь набора команд 386 (если ваш код 32-битный) или раннего набора команд x86-64 (если он 64-битный).

1 голос
/ 11 января 2010

Загрузчик выполняется в 16-битном реальном режиме (хотя у вас есть доступ к 32-битным регистрам через префикс размера операнда) Получить справочник 386, и вы будете в безопасности.

...