В разборе Windows для архитектуры Itanium показано, как устройство набора команд облегчало горячую замену функций. В этой архитектуре код группировался в bundle фиксированного размера, каждый из которых содержал три слота для инструкций.
Переход вместо первого bundle
В описываемой схеме начало функции можно было заменить сочетанием nop и brl.cond.sptk target64. Длинный переход занимал два слота, поэтому эти инструкции совместно заполняли весь первый bundle, позволяя организовать компактную замену без выделения отдельного запаса байтов перед началом функции.
Вариант с загрузкой адреса в общий регистр и дальнейшим косвенным переходом требовал дополнительных инструкций: нужно было поместить адрес в регистр общего назначения и затем перенести его в регистр ветвления. Такая последовательность уже не умещалась в один bundle и потому не подходила для компактного hotpatch.
Не путать с выравниванием
Иногда перед функциями встречались bundle с инструкциями break. Это чаще связано с выравниванием начала функции на границу 32 байт, а не с созданием запаса для горячей замены. Приведённый пример относится к конкретной исторической реализации Windows на архитектуре Itanium и не описывает современные процедуры обновления приложений.