* 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>
3.0 KiB
+++ title = "Отключение красной зоны" weight = 1 path = "ru/red-zone" template = "edition-2/extra.html" +++
Красная зона — это оптимизация System V ABI, которая позволяет функциям временно использовать 128 байт ниже своего стекового кадра без корректировки указателя стека:
На рисунке показан стековый фрейм функции с n локальных переменных. При входе в функцию указатель стека корректируется, чтобы освободить место в стеке для адреса возврата и локальных переменных.
Красная зона определяется как 128 байт ниже скорректированного указателя стека. Функция может использовать эту зону для временных данных, которые не нужны при всех вызовах функции. Таким образом, в некоторых случаях (например, в небольших листовых функциях) можно обойтись без двух инструкций для корректировки указателя стека.
Однако такая оптимизация приводит к огромным проблемам при работе с исключениями или аппаратными прерываниями. Предположим, что во время использования функцией красной зоны происходит исключение:
Процессор и обработчик исключений перезаписывают данные в красной зоне. Но эти данные все еще нужны прерванной функции. Поэтому функция не будет работать правильно, когда мы вернемся из обработчика исключений. Это может привести к странным ошибкам, на отладку которых уйдут недели.
Чтобы избежать подобных ошибок при реализации обработки исключений в будущем, мы отключим красную зону с самого начала. Это достигается путем добавления строки "disable-redzone": true в наш целевой конфигурационный файл.