stringtranslate.com

Zona roja (informática)

En informática , la zona roja es un área de tamaño fijo en el marco de pila de una función debajo (para una pila de empuje hacia abajo) del puntero de pila actual que está reservado y es seguro de usar. Se usa más comúnmente en funciones de hoja (funciones que no llaman a otras funciones) para asignar memoria de pila adicional, sin mover el puntero de pila, lo que ahorra una instrucción.

La presencia de una zona roja depende de la convención de llamada . Los sistemas x86-64 que utilizan la ABI System V AMD64 (incluidos Linux y macOS ) utilizan una zona roja de 128 bytes que comienza directamente debajo del valor actual del puntero de pila. [1] [2] La cadena de herramientas OpenRISC asume una zona roja de 128 bytes. [3] Microsoft Windows no tiene el concepto de zona roja en x86 . [4] De hecho, la ABI establece explícitamente que la memoria más allá del puntero de pila es volátil y puede ser sobrescrita por depuradores o controladores de interrupciones. [5] [6] Sin embargo, Microsoft Windows tiene una zona roja de 16 bytes en IA-64 , 8 bytes en AArch32 y 16 bytes en AArch64 . [6]

La zona roja está a salvo de modificaciones por parte de controladores de interrupciones / excepciones / señales .

Notas y referencias

  1. ^ Michael Matz; Jan Hubička; Andreas Jaeger; et al., eds. (28 de enero de 2018). "Suplemento para procesadores de arquitectura AMD64 con interfaz binaria de aplicación de System V (con modelos de programación LP64 e ILP32) versión 1.0" (PDF) . 1.0.
  2. ^ "Opciones i386 y x86-64 - Uso de la colección de compiladores GNU (GCC)" . Consultado el 10 de abril de 2011 .
  3. ^ "OpenCores Wiki - Cadena de herramientas GNU de OpenRISC" . Consultado el 28 de mayo de 2014 .
  4. ^ Fog, Agner (31 de enero de 2021). Convenciones de llamada para diferentes compiladores y sistemas operativos de C++ (PDF) . Dinamarca. p. 20 . Consultado el 11 de julio de 2021 .{{cite book}}: Mantenimiento de CS1: falta la ubicación del editor ( enlace )
  5. ^ Bendersky, Eli (6 de septiembre de 2011). "Diseño de marco de pila en x86-64". Sitio web de Eli Bendersky . Consultado el 11 de julio de 2021 .
  6. ^ ab Chen, Raymond (11 de enero de 2019). "¿Por qué necesitamos definir una zona roja? ¿No puedo usar mi pila para cualquier cosa?". The Old New Thing . Consultado el 11 de julio de 2021 .