레드존(컴퓨팅)

Red zone (computing)

컴퓨팅에서 레드존은 (푸시다운스택의 경우) 현재 스택포인터 아래에 있는 함수의 스택프레임의 고정 사이즈 영역이며, 사용하기에 안전한 영역입니다.명령어를 저장하는 스택포인터를 이동하지 않고 추가 스택메모리를 할당하기 위해 리프 함수(다른 함수를 호출하지 않는 함수)에서 가장 일반적으로 사용됩니다.

빨간색 존이 존재하는지 여부는 호출 규약에 따라 달라집니다.System V AMD64 ABI(Linux 및 MacOS 포함)를 사용하는 x86-64 시스템에서는 스택 [1][2]포인터의 현재 값 바로 아래에 시작하는 128바이트 빨간색 영역을 사용합니다.OpenRISC 툴체인은 128바이트의 레드존을 [3]상정하고 있습니다Microsoft Windows 에는, x86 [4]의 레드 존의 개념이 없습니다.실제로 ABI는 스택포인터 너머의 메모리는 휘발성이 있으며 디버거나 인터럽트 [5][6]핸들러에 의해 덮어쓸 수 있다고 명시하고 있습니다.다만, Microsoft Windows 에서는 IA-64 로 16 바이트, AArch32 로 8 바이트, AArch64 [6]로 16 바이트의 레드 존이 설정되어 있습니다.

빨간색 영역은 인터럽트/예외/신호 핸들러에 의한 변경으로부터 안전합니다.

주 및 참고 자료

  1. ^ Michael Matz; Jan Hubička; Andreas Jaeger; et al., eds. (2018-01-28). "System V Application Binary Interface: AMD64 Architecture Processor Supplement (With LP64 and ILP32 Programming Models) Version 1.0" (PDF). 1.0.
  2. ^ "i386 and x86-64 Options - Using the GNU Compiler Collection (GCC)". Retrieved 2011-04-10.
  3. ^ "OpenCores Wiki - OpenRISC GNU toolchain". Retrieved 2014-05-28.
  4. ^ Fog, Agner (2021-01-31). Calling conventions for different C++ compilers and operating systems (PDF). Denmark. p. 20. Retrieved 2021-07-11.
  5. ^ Bendersky, Eli (2011-09-06). "Stack frame layout on x86-64". Eli Bendersky's website. Retrieved 2021-07-11.
  6. ^ a b Chen, Raymond (2019-01-11). "Why do we even need to define a red zone? Can't I just use my stack for anything?". The Old New Thing. Retrieved 2021-07-11.