суббота, 9 июля 2011 г.

Использование Yoda на x86 может быть опасно для здоровья вашей системы

Это перевод Using Yoda on an x86 may be hazardous to your systems' health. Автор: Реймонд Чен.

В прежние времена очень кросс-платформенная NTVDM была.

Если вы посмотрите на NTVDM.exe в шестнадцатеричном редакторе, то вы можете увидеть сообщение "Using Yoda on an x86 may be hazardous to your systems' health" ("Использование Yoda на x86 может быть опасно для здоровья вашей системы") внутри него. Yoda - это имя внутреннего отладчика, используемого для отладки эмулятора MS-DOS, также известного как Virtual DOS Machine или VDM (внутри исходного кода Yoda похоронены такие замечательные переменные как "luke" и "chewy").

Intel 80386 имеет режим, известный как "Virtual-8086" или просто "режим V86", при котором CPU работает как если бы он был процессором 8086, за исключением того, что если программа сделает что-то интересное (вроде попытки выполнения привилегированной инструкции, вызова прерывания или аппаратного исключения), то управление будет передано в супервайзор защищённого режима для дальнейшей обработки (Win386 использовала этот же режим процессора для поддержки выполнения нескольких сессий MS-DOS). Будучи запущенным на процессоре класса 80386, NTVDM использовал этот режим для выполнения эмуляции, перекладывая всю сложную работу (декодирование и эмуляция инструкций) на процессор - что в итоге работало на скорости, близкой к максимальной.

С другой стороны NTVDM на процессорах, отличных от x86 (Alpha, PPC, MIPS и т.п.), реализовывал полный эмулятор 8086 - с программным декодированием и выполнением инструкций. Yoda был отладчиком, который мы использовали для отладки этого эмулятора.

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

(Благодарю Andrew McLaren и Tony Gaston за историческую справку по этому вопросу).

Комментариев нет:

Отправить комментарий

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку (поддерживается OpenID).

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

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