В вычислительной технике красная зона — это область фиксированного размера в стековом кадре функции ниже (для выталкивающего стека) текущего указателя стека, которая зарезервирована и безопасна для использования. Чаще всего она используется в листовых функциях (функциях, которые не вызывают другие функции) для выделения дополнительной памяти стека без перемещения указателя стека, что сохраняет инструкцию.
Наличие красной зоны зависит от соглашений о вызовах. Системы x86-64, использующие System V AMD64 ABI (включая Linux и macOS), используют 128-байтовую красную зону, которая начинается непосредственно под текущим значением указателя стека.[1][2] OpenRISC toolchain предполагает 128-байтовую красную зону.[3] Microsoft Windows не имеет концепции красной зоны на x86.[4] Однако Microsoft Windows имеет красную зону в 16 байтов на IA-64, 8 байтов на AArch32 и 16 байтов на AArch64.[5] ABI прямо указывает, что память за указателем стека является энергозависимой и может быть перезаписана отладчиками или обработчиками прерываний.[6][5]
Красная зона защищена от модификации обработчиками прерываний, исключений и сигналов.
Примечания