2010-01-11 3 views
7

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

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

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

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

ответ

5

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

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

+1

Я заметил недавнюю тенденцию к созданию ядер Linux в различных дистрибутивах для 586 (Pentium) или лучше в эти дни ... хотя они по-прежнему не могут по умолчанию использовать ядра 686 (Pentium II/III/IV/Pro) из-за различий между ними и инструкциями k7 (AMD Athlon). – Powerlord

+0

R. Bemrose: Это логичный способ в конце концов. IMO, красота x86-64 не просто 64-разрядная, но и установление разумного минимума для инструкций, поддерживаемых процессорами (например, SSE) –

+0

https://fedoraproject.org/wiki/Features/F12X86Support Fedora 12 теперь построена для i686 , отказавшись от поддержки многих старых процессоров. Мой бедный Виа С3 ... :-( – ephemient

1

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

Смежные вопросы