Рэймонд Чен рассказал об «ужасном» коде эмулятора x86

2 мин
Рэймонд Чен рассказал об «ужасном» коде эмулятора x86

Инженер Microsoft Рэймонд Чен рассказал, как команда разработчиков Microsoft обнаружила настолько плохой исходник эмулятора x86, что исправила его во время эмуляции. 

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

«Это обеспечивало значительное повышение производительности по сравнению с эмуляцией через интерпретатор. Можно представить, что x86-32 — это просто байт-код, а эмулятор — это JIT-компилятор», — отметил Чен.

В соответствии с заявлению инженера, его коллега обнаружил, что одной программе необходимо выделить около 64 КБ памяти в стеке и инициализировать её. Стандартный метод сделать это — выполнить проверку стека, чтобы убедиться, что 64 КБ памяти доступны, затем вычесть 65536 из указателя стека и инициализировать память в небольшом цикле. Тем не менее, вместо того чтобы разрабатывать цикл для инициализации каждого байта буфера, компилятор «улучшил» код, развернув цикл в 65 536 отдельных инструкций «запись байта в память», каждая длиной в 4 байта.

Итак, для инициализации 64 килобайт данных программе потребовалось 256 килобайт кода.

«Это настолько возмутило команду, что они добавили в транслятор особый исходник для обнаружения этой ужасной функции и замены её эквивалентным “плотным” циклом», — заключил Чен.

Ранее инженер объяснил, что происходит, когда потребитель удерживает клавишу Shift при перезагрузке Windows, и вместо полной перезагрузки системы одновременно отображается сообщение «Windows перезагружается».

В дополнение к этого, разработчик поделился, что ещё в 90-е годы производители компьютеров добавили строки авторских прав в BIOS, чтобы предлагать клиентам полные версии пробного программного обеспечения в качестве бонуса.

Наконец, Чен раскрыл очередной секрет эпохи 16-битной Windows, связанный с названием ошибки hard error. Он отметил, что сообщения были сгенерированы внутри системы ввода-вывода, ниже уровня пользовательского интерфейса.

Читают сейчас

Вышел альфа-релиз Paint.NET 5.2 с экспериментальной поддержкой Wine/Linux

1 час назад

Вышел альфа-релиз Paint.NET 5.2 с экспериментальной поддержкой Wine/Linux

1 сентября 2026 года состоялся выпуск альфа-версии графического редактора с открытым исходным кодом Paint.NET 5.2 для Windows 10/11 (64-бита) и с экспериментальной поддержкой Wine/Linux (Wine 11.14, U

1 час назад

Операционная платформа «Альт Образование» бесплатна для школ — акция от «Базальт СПО»

Операционная платформа «Альт Образование» бесплатна для школ — акция от «Базальт СПО» Организация «Базальт СПО» запускает специальное предложение для школ: операционная система «Альт Образование» 11 п

Google добавила агентный аналитика видео в Gemini 3.7 Flash, 3.6 Flash и 3.5 Flash-Lite

1 час назад

Google добавила агентный аналитика видео в Gemini 3.7 Flash, 3.6 Flash и 3.5 Flash-Lite

Google запустила агентный анализ видео для Gemini 3.7 Flash, 3.6 Flash и 3.5 Flash-Lite. Теперь модель анализирует видео не как последовательность кадров с фиксированной частотой, а сама решает, какие

Апдейт платформы «Октопус» от ГК «Юзтех»: историческая анализ и расширенная сопровождение инфраструктур

2 часа назад

Апдейт платформы «Октопус» от ГК «Юзтех»: историческая анализ и расширенная сопровождение инфраструктур

В новых версиях «Октопус» мы сфокусировались на трёх направлениях: расширении возможностей управления ИТ-инфраструктурой, повышении производительности и развитии интеграций. Система получила новые сце

Frank Media рассказал о сложностях, с которыми столкнулись пользователи при попытке воспользоваться цифровым рублём

2 часа назад

Frank Media рассказал о сложностях, с которыми столкнулись пользователи при попытке воспользоваться цифровым рублём

С 1 сентября должно было начаться массовое добавление цифрового рубля — третьей формы денег, которую Банк России обсуждает уже около шести лет. Тем не менее, судя по первым дням запуска, доступ к ново