Jump to content

Красная зона (вычисления)

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

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

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

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

[ редактировать ]
  1. ^ Майкл Матц; Ян Губичка; Андреас Йегер; и др., ред. (28 января 2018 г.). «Двоичный интерфейс приложения System V: дополнение к процессору архитектуры AMD64 (с моделями программирования LP64 и ILP32), версия 1.0» (PDF) . 1.0.
  2. ^ «Параметры i386 и x86-64 — использование коллекции компиляторов GNU (GCC)» . Проверено 10 апреля 2011 г.
  3. ^ «OpenCores Wiki — набор инструментов OpenRISC GNU» . Проверено 28 мая 2014 г.
  4. ^ Туман, Агнер (31 января 2021 г.). Соглашения о вызовах для разных компиляторов и операционных систем C++ (PDF) . Дания. п. 20 . Проверено 11 июля 2021 г. {{cite book}}: CS1 maint: отсутствует местоположение издателя ( ссылка )
  5. ^ Бендерский, Эли (6 сентября 2011 г.). «Разметка фрейма стека на x86-64» . Сайт Эли Бендерского . Проверено 11 июля 2021 г.
  6. ^ Перейти обратно: а б Чен, Рэймонд (11 января 2019 г.). «Зачем нам вообще нужно определять красную зону? Разве я не могу просто использовать свой стек для чего-нибудь?» . Старая новая вещь . Проверено 11 июля 2021 г.


Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 1468e07b21ac8b9f5df40661cadf47e5__1676998020
URL1:https://arc.ask3.ru/arc/aa/14/e5/1468e07b21ac8b9f5df40661cadf47e5.html
Заголовок, (Title) документа по адресу, URL1:
Red zone (computing) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)