Набор команд AArch64 отличается фиксированной длиной инструкций в четыре байта. Эта особенность упрощает подготовку функций к горячему обновлению (hotpatch) в Windows на ARM64, поскольку счётчик команд всегда указывает на границы инструкций и исключает необходимость подбора первой инструкции для выравнивания, характерную для архитектур с переменной длиной команд.
Выравнивание точки входа
Благодаря фиксированной длине команд адрес точки входа функции совпадает с границей инструкции, поэтому можно надёжно размещать переадресующий код без подгонки инструкции по смещению. В описываемой схеме перед телом функции резервируется область размером 12 байт — место для трёх инструкций переходного кода (trampoline). Такая зона позволяет поместить небольшой набор инструкций, перенаправляющих исполнение, при этом временные регистры, допустимые соглашением о вызовах изменять при переходах (например, регистр типа xip0), используются для организации перехода.
Ограничения и безопасность
Наличие зарезервированной области и подходящего кодирования инструкций — лишь один элемент механизма hotpatch. Это не означает, что произвольное изменение содержимого функций безопасно для работающего процесса или что сторонняя программа может использовать системные области для своих целей. Подобные механизмы проектируются с учётом прав доступа, целостности кода и требований системы; сам по себе разбор архитектуры не является инструкцией по записи байтов в память работающего процесса.