понедельник, 21 января 2019 г.

Почему компилятор генерирует операции с памятью для полной переменной, даже если задействован только один байт?

Это перевод Why does the compiler generate memory operations on the full variable even though only one byte is involved? Автор: Реймонд Чен.

Когда-то я помогал с генерацией кода JIT компиляторе, и я заметил одну вещь: когда компилятору нужно было, скажем, установить старший бит в четырёхбайтовой переменной, он сделал так:
xor dword ptr [variable], 80000000h
вместо более компактного:
xor byte ptr [variable + 3], 80h
Эти две операции функционально эквивалентны: установка верхнего бита в четырёхбайтовом значении эквивалентна установке верхнего бита в однобайтовом значении - потому что младшие биты не зависят от операции.

Поддержка классического оборудования эмуляцией

Это перевод Keeping classic hardware alive through emulation. Автор: Реймонд Чен.

На конференции и выставке Windows 2000, которая совпала с запуском операционной системы, я посетил стенд emulators.com, где они с увлечением демонстрировали SoftMac 2000 - эмулятор Mac, работающий на Windows 2000.

пятница, 11 января 2019 г.

Зачем нужна красная зона? Я же могу просто использовать стек?

Это перевод Why do we even need to define a red zone? Can’t I just use my stack for anything? Автор: Реймонд Чен.

В Windows стек растет от больших адресов к меньшим. Иногда это определяется архитектурно, а иногда просто условно. Значение, на которое указывает регистр указателя стека, располагается на вершине стека, а значения, расположенные глубже в стеке, находятся по адресам выше. Но что происходит с данными по адресам меньшим, чем указатель стека?

среда, 19 декабря 2018 г.

вторник, 20 ноября 2018 г.

Как однажды ядро Windows пыталось противостоять гамма-лучам, разрушающим кэш процессора

Это перевод For a brief period, the kernel tried to deal with gamma rays corrupting the processor cache. Автор: Реймонд Чен.

Однажды вот такой код был добавлен в часть ядра, которая возвращает систему из энергосберегающего режима:
;
; Сбрасывает кэш процессора, чтобы все побочные гамма-лучи (я не шучу),
; которые могли изменить биты кэша S1, игнорировались бы.
;
; Это не шутка. Это просили производители процессора.
; Я серьёзно.
;
invd

суббота, 3 ноября 2018 г.

Что случилось со шрифтом Arial Unicode MS?

Это перевод What happened to the Arial Unicode MS font? Автор: Реймонд Чен.

Клиент хотел узнать, что случилось со шрифтом Arial Unicode MS. Раньше он устанавливался вместе с Microsoft Office, но был удалён из Microsoft Office 2016. По этому поводу было придумано множество различных теорий заговоров.

вторник, 2 октября 2018 г.

В трёх экземплярах, будьте добры

Это перевод Windows Confidential: In Triplicate, Please? Автор: Реймонд Чен.

Однажды клиент заметил, что размер файла, о котором сообщал Explorer, не меняется, пока приложение, которое обновляет файл, не закрывает файл окончательно. (Проблема была немного в другом, но мы не будем об этом).

Клиентская техподдержка нашла запись в блоге по этому вопросу, но клиент попросил её найти какую-либо формальную документацию. Неясно, какую именно формальную документацию клиент искал для решения проблемы.

При отключении службы планировщика заданий происходят всякие плохие вещи. Это плохо или нет?

Это перевод All sorts of bad things happen when we disable the Task Scheduler service, is that bad? Автор: Реймонд Чен.

Клиент при помощи групповой политики отключил службу планировщика заданий (Task Sheduler). После этого они обнаружили, что многие вещи перестали работать. Например, меню «Пуск» стало висеть в течение нескольких минут. Поиск прекратил работать. «Есть ли у вас идеи, что могло вызвать эти проблемы?»

среда, 25 июля 2018 г.

Отчёт об уязвимости, раздвигающий границы криптографии

Это перевод Pushing the boundaries of cryptography in a security vulnerability report. Автор: Реймонд Чен.

К нам поступил отчёт об уязвимости в безопасности, в котором сообщалось, что автор отчёта сделал инновационное открытие в криптографии. В частности, он утверждал, что обнаружил эффективный способ решения задачи факторизации больших целых чисел, используемых в крипто-алгоритме RSA.