Я просто касаюсь поверхности x86 системы команд после длительного периода высокоуровневого программирования. Это были приблизительно 20 лет, у меня было свое первое чтение на x86 программировании блока, и от моих поисков с помощью Google я просто потерян с несметным числом ссылок системы команд; от, которые смешивают новые поколения процессоров (286, 386, 486...) другим, которые добавляют более новые x86 инструкции. Не говоря уже об изменениях AMD.
Так как я - планирование создания загрузчика, моя первая мысль должна была быть полностью совместимой с 'стандартом x86', но я не могу выяснить, где вовремя это или даже если это существует где-нибудь.
Даже документация Intel кажется, следуют за тем же путем, и как другой сказал, 'нам нужна x86 стандартизация системы команд, эволюция кодов операций хаотична'.
Это не моя идея содержать баннер стандартизации. Я просто хочу видеть дорогу и понять, куда безопасное место должно идти. Если бы кто-либо мог бы помочь, я ценил бы много!
Исторически, X86 был очень обратно совместимым. X86-64 выбросил несколько очень старых инструкций (например, инструкции BCD), но вряд ли это произойдет, что эти изменения произойдут снова (по крайней мере, пока не будет, пока не будет, как 64 бит-адресного пространства, происходит).
Если вы хотите убедиться, что ваш код работает практически во всех процессорах x86, придерживайтесь набора инструкций 386 (если ваш код 32-разрядной) или начала X86-64 набор инструкций (если это 64-битное).
Загрузочный загрузчик выполняется в 16-битном реальном режиме (хотя у вас есть доступ к 32-разрядным регистрам через префикс размера операнда). Получите ссылку на инструкции 386, и вы будете в безопасности.