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

11 минут назад
Sandisk представила накопитель Optimus GX Pro 850P формата M.2 с NVMe и PCIe 4.0, разработанный для Sony PS5 и PS5 Pro
Sandisk презентовала твердотельный накопитель Optimus GX Pro 850P формата M.2 с NVMe и PCIe 4.0, разработанный специально для игровых консолей Sony PlayStation 5 и PlayStation 5 Pro. Этот официально л

35 минут назад
Крупное апдейт JS/TS поддержки в OpenIDE
Команда OpenIDE обновила расширение Frontend/Web для работы с JavaScript и TypeScript. Расширение находится в статусе бета. Inlay hints теперь показывают вывод типов прямо в коде. Появился Format/Fix

37 минут назад
BPMSoft следующий год подряд возглавила рейтинг CRM-систем от Фонда Сколково и TAdviser
Привет! Мы команда BPMSoft, и у нас отличные новости! Мы подтвердили свое лидерство в области CRM-систем. Фонд Сколково (Группа ВЭБ.РФ) совместно с аналитическим центром TAdviser представили результат

56 минут назад
Свой Банк запустил мобильное программа для бизнеса на iOS
В 2026 году управлять расчетным счётом исключительно с десктопа — странная практика. Предприниматели уже привыкли, что личные финансы живут в смартфоне, и ждут такого же бесшовного опыта от корпоратив

58 минут назад
RecSys встреча: технологии персонализации от AI VK
Привет, ! 1 июля приглашаем на митап от AI VK по рекомендательным системам. В программе — хардовые доклады, разбор архитектурных решений и общение. Что будет на митапе