Рэймонд Чен рассказал об «ужасном» коде эмулятора 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. Он отметил, что сообщения были сгенерированы внутри системы ввода-вывода, ниже уровня пользовательского интерфейса.

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

Microsoft с 1 августа подняла цены на Xbox по всему миру

3 часа назад

Microsoft с 1 августа подняла цены на Xbox по всему миру

С 1 августа 2026 года Microsoft повысила цены на Xbox по всему миру. Цена консолей увеличится на $100 для моделей с 512 ГБ памяти и на $150 для моделей с 1 ТБ. В дополнение к этого, прекратится выпуск

Alibaba выпустили Qwen3.8-Max: стоит в четыре раза дешевле Opus 5, но уступает в сложном кодинге

4 часа назад

Alibaba выпустили Qwen3.8-Max: стоит в четыре раза дешевле Opus 5, но уступает в сложном кодинге

Команда Qwen выпустила Qwen3.8-Max, новую флагманскую MoE-модель на 2,4 трлн параметров. На каждом токене активируются 95 млрд параметров, размер контекста составляет 1 млн токенов. В api схема стоит

Версия обновления видеоредактора с открытым исходным кодом Shotcut 26.8

4 часа назад

Версия обновления видеоредактора с открытым исходным кодом Shotcut 26.8

В начале августа 2026 года состоялся выпуск мультиплатформенного видеоредактора с открытым исходным кодом Shotcut 26.8, созданного на основе MLT Multimedia Framework. Исходный код проекта написан на C

Исследование: IT‑команды тратят 11 часов в неделю на проблемы с подключением к облаку

4 часа назад

Исследование: IT‑команды тратят 11 часов в неделю на проблемы с подключением к облаку

По данным Computer Weekly, исследователи обнаружили, что предприятия тратят больше времени на устранение неполадок с подключением к облаку из‑за возросшей нагрузки на системы искусственного интеллекта

Группу подростков‑туристов пришлось спасать на вертолёте из‑за ошибки Google Maps

4 часа назад

Группу подростков‑туристов пришлось спасать на вертолёте из‑за ошибки Google Maps

В начале июля группа подростков отправилась в поход по знаменитой тропе Хау‑Саунд‑Крест в Британской Колумбии, но из‑за ошибки в Google Maps туристам потребовалась помощь спасателей. Читать далее