Красная зона (вычисления) - Red zone (computing) - Wikipedia

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

Наличие красной зоны зависит от соглашение о вызовах. 64-битные системы, использующие System V AMD64 ABI (включая Linux и macOS ) и OpenRISC используйте красную зону. Microsoft Windows не использует красную зону.

Красная зона защищена от модификации прерывать /исключение /сигнал обработчики.

В x86-64 ABI используется System V требует 128-байтовой красной зоны,[1][2] который начинается непосредственно под текущим значением указателя стека. В OpenRISC набор инструментов предполагает наличие 128-байтовой красной зоны.[3]

Примечания и ссылки

  1. ^ Майкл Матц; Ян Губичка; Андреас Йегер; и др., ред. (2018-01-28). «Двоичный интерфейс приложения System V: Дополнение к процессору архитектуры AMD64 (с моделями программирования LP64 и ILP32), версия 1.0» (PDF). 1.0.
  2. ^ «Параметры i386 и x86-64 - Использование коллекции компиляторов GNU (GCC)». Получено 2011-04-10.
  3. ^ "OpenCores Wiki - набор инструментов OpenRISC GNU". Получено 2014-05-28.