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

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

Гейтс: власти ни одной из стран не готовы к изменениям под влиянием ИИ

45 минут назад

Гейтс: власти ни одной из стран не готовы к изменениям под влиянием ИИ

Основатель Microsoft Билл Гейтс в интервью агентству Reuters объявил, что ни одно правительство в мире не готово к тем переменам, которые привнесёт искусственный интеллект. Ознакомиться далее

Anthropic запустили в бете обновлённые Projects в Claude Code

51 минуту назад

Anthropic запустили в бете обновлённые Projects в Claude Code

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

AMD повысит цены на продукцию на 10% в четвёртом квартале

1 час назад

AMD повысит цены на продукцию на 10% в четвёртом квартале

AMD заявила партнёрам, что планирует повысить цены примерно на 10% на некоторые CPU в четвёртом квартале 2026 года. На такой шаг организация идёт из‑за увеличения производственных расходов тайваньской

В Anthropic работают приблизительно 30 000 ИИ‑агентов или как Claude разрабатывает себя сам

1 час назад

В Anthropic работают приблизительно 30 000 ИИ‑агентов или как Claude разрабатывает себя сам

По внутреннему индексу автоматизации самих Anthropic, Claude уже ведёт 26% работы в области разработки ИИ: получает задачу на высоком уровне и выполняет большую часть работы самостоятельно, оставаясь

OpenAI и Microsoft признали уничтожение веба со стороны LLM

1 час назад

OpenAI и Microsoft признали уничтожение веба со стороны LLM

Руководители Microsoft и OpenAI, работающие над ИИ, признали, что большие языковые модели отличаются «поразительной кражей беспрецедентных масштабов» при обучении. Во внутреннем документе Microsoft го