Jump to content

Недопустимый код операции

Незаконный командный сигнал, сгенерированный человеком

Недопустимый код операции , также называемый нереализованной операцией . [1] непреднамеренный код операции [2] или недокументированная инструкция — это инструкция для ЦП , которая не упоминается ни в одной официальной документации, выпущенной разработчиком или производителем ЦП, но, тем не менее, имеет эффект. Незаконные коды операций были распространены на старых процессорах, разработанных в 1970-х годах, таких как MOS Technology 6502 , Intel 8086 и Zilog Z80 . В этих старых процессорах многие из них возникают как побочный эффект подключения транзисторов в ЦП и обычно объединяют функции ЦП, объединение которых не предполагалось. На старых и современных процессорах также имеются инструкции, намеренно включенные в процессор производителем, но не задокументированные ни в одной официальной спецификации.

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

Хотя большинство случайных незаконных инструкций имеют бесполезные или даже крайне нежелательные последствия (например, сбой в работе компьютера), некоторые из них могут иметь полезные функции в определенных ситуациях. Такие инструкции иногда использовались в компьютерных играх 1970-х и 1980-х годов для ускорения определенных критичных по времени участков. Другое распространенное применение — продолжающаяся битва между реализациями защиты от копирования и взломом . Здесь они были формой безопасности благодаря неизвестности , и их секретность обычно длилась недолго.

Опасность, связанная с использованием незаконных инструкций, заключалась в том, что, учитывая тот факт, что производитель не гарантирует их существование и функционирование, они могут исчезнуть или вести себя по-другому при любом изменении внутреннего устройства ЦП или любой новой версии ЦП, создавая программы, которые используйте их, несовместимые с более новыми версиями. Например, ряд старых игр Apple II не работали корректно на более новом Apple IIc , поскольку последний использовал более новую версию процессора — 65C02 — которая устранила недопустимые коды операций.

Более поздние процессоры, такие как 80186 , 80286 , 68000 и их потомки, не имеют недопустимых кодов операций, которые широко известны/используются. В идеале ЦП будет вести себя четко определенным образом, когда обнаружит неизвестный код операции в потоке команд, например, вызовет определенное исключение или состояние ошибки . Обработчик исключений или сбоев операционной системы обычно завершает приложение, вызвавшее сбой, если только программа ранее не установила свой собственный обработчик исключений/ошибок, и в этом случае этот обработчик получит управление. процессора Другой, менее распространенный способ обработки недопустимых инструкций — определить, что они ничего не делают, кроме как занимают время и пространство (эквивалент официальной инструкции NOP ); этот метод используется , среди прочего, процессорами TMS9900 и 65C02 . Альтернативно, неизвестные инструкции могут быть эмулированы в программном обеспечении (например, LOADALL ) или даже могут быть реализованы «новые» псевдоинструкции. Некоторые BIOS , менеджеры памяти и операционные системы используют это преимущество, например, чтобы позволить задачам V86 взаимодействовать с базовой системой, т. е. BOP (из «Операции BIOS»), используемым Windows. НТВДМ . [3]

Несмотря на гарантию Intel против таких инструкций, исследования с использованием таких методов, как фаззинг, еще в 2018 году выявили огромное количество недокументированных инструкций в процессорах x86. [4] Некоторые из этих инструкций используются производителями процессоров, что указывает на то, что Intel и AMD знают об этой инструкции и ее назначении, несмотря на то, что она не фигурирует ни в одной официальной спецификации. Другие инструкции относятся к конкретным производителям или конкретным линейкам продуктов. Назначение большинства недокументированных инструкций x86 неизвестно.

Сегодня детали этих инструкций представляют интерес главным образом для точной эмуляции старых систем.

См. также

[ редактировать ]
  1. ^ «1.2. Формат инструкции». Справочное руководство PDP-10: Программирование с использованием набора инструкций PDP-10 (PDF) . Том. 1. Корпорация цифрового оборудования (DEC). 1969. с. 1-7 . Проверено 13 мая 2022 г.
  2. ^ Окессон, Линус (31 марта 2013 г.). «Декодирование GCR на лету» . Архивировано из оригинала 21 марта 2017 г. Проверено 21 марта 2017 г.
  3. ^ Шульман, Эндрю; Браун, Ральф Д .; Макси, Дэвид; Михелс, Раймонд Дж.; Кайл, Джим (1994) [ноябрь 1993 г.]. Недокументированная DOS: Руководство программиста по зарезервированным функциям и структурам данных MS-DOS - расширено и включает MS-DOS 6, Novell DOS и Windows 3.1 (2-е изд.). Ридинг, Массачусетс: Эддисон Уэсли . ISBN  0-201-63287-Х . (xviii+856+vi страниц, 3,5-дюймовая дискета) Исправления: [1] [2]
  4. ^ Домас, Кристофер. «Нарушение набора инструкций x86» . Ютуб . Архивировано из оригинала 19 декабря 2021 г. Проверено 3 января 2018 г.

Дальнейшее чтение

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 28406a91ad2e9ce8ef609c15e1fc2a9d__1695224520
URL1:https://arc.ask3.ru/arc/aa/28/9d/28406a91ad2e9ce8ef609c15e1fc2a9d.html
Заголовок, (Title) документа по адресу, URL1:
Illegal opcode - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)