Files
blog_os/blog/content/edition-2/posts/02-minimal-rust-kernel/disable-red-zone/index.ru.md
MrZlo 0edd05ccac Translate first two posts into Russian (#1029)
* preabule

* Introduction

* Introduction

* Disactivation

* Disablaing std

* no_std

* panic_handler

* eh_personality

* unwiding

* start

* entry point

* summary

* what's next

* Details

* fix:
title

* config

* next post fix

* tabs into spaces

* fix: correct link to 02 post

* fix: bad gateway

* fix: typo error

* TRANSITION TO SECOND POST

* HEADER

* PREAMBULE

* BOOT SEQUENCE

* BOOT BIOS

* MULTIBOOT

* UEFI

* MINIMAL KERNEL

* NIGHTLY INSTALL

* SPECIFICATION JSON

* BUILD

* INTRISICS

* DEFAULT TARGET

* PRINTING TO SCREEN

* BOOTIMAGE

* FIRST BOOT

* FINISH

* RED ZONE

* SIMD

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* FIX: CONTROVERSIAL MOMENTS

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/01-freestanding-rust-binary/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/02-minimal-rust-kernel/disable-red-zone/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/02-minimal-rust-kernel/disable-simd/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/02-minimal-rust-kernel/disable-simd/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/02-minimal-rust-kernel/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/02-minimal-rust-kernel/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/02-minimal-rust-kernel/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/02-minimal-rust-kernel/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/02-minimal-rust-kernel/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/02-minimal-rust-kernel/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/02-minimal-rust-kernel/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/02-minimal-rust-kernel/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/02-minimal-rust-kernel/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/02-minimal-rust-kernel/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/02-minimal-rust-kernel/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/02-minimal-rust-kernel/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/02-minimal-rust-kernel/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/02-minimal-rust-kernel/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/02-minimal-rust-kernel/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/02-minimal-rust-kernel/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/02-minimal-rust-kernel/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/02-minimal-rust-kernel/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/02-minimal-rust-kernel/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/02-minimal-rust-kernel/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/02-minimal-rust-kernel/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/02-minimal-rust-kernel/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/02-minimal-rust-kernel/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* Update blog/content/edition-2/posts/02-minimal-rust-kernel/index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* LANGUAGE ITEM

* ALL OTHER MOMENTS

* standarD

* ADDITIONAL SETUP FILES

* Update blog/content/_index.ru.md

Co-authored-by: SnejUgal <contact@snejugal.ru>

* WRONG LINKS

Co-authored-by: SnejUgal <contact@snejugal.ru>
2021-07-19 12:14:39 +02:00

3.0 KiB
Raw Blame History

+++ title = "Отключение красной зоны" weight = 1 path = "ru/red-zone" template = "edition-2/extra.html" +++

Красная зона — это оптимизация System V ABI, которая позволяет функциям временно использовать 128 байт ниже своего стекового кадра без корректировки указателя стека:

stack frame with red zone

На рисунке показан стековый фрейм функции с n локальных переменных. При входе в функцию указатель стека корректируется, чтобы освободить место в стеке для адреса возврата и локальных переменных.

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

Однако такая оптимизация приводит к огромным проблемам при работе с исключениями или аппаратными прерываниями. Предположим, что во время использования функцией красной зоны происходит исключение:

red zone overwritten by exception handler

Процессор и обработчик исключений перезаписывают данные в красной зоне. Но эти данные все еще нужны прерванной функции. Поэтому функция не будет работать правильно, когда мы вернемся из обработчика исключений. Это может привести к странным ошибкам, на отладку которых уйдут недели.

Чтобы избежать подобных ошибок при реализации обработки исключений в будущем, мы отключим красную зону с самого начала. Это достигается путем добавления строки "disable-redzone": true в наш целевой конфигурационный файл.