En informática , la zona roja es un área de tamaño fijo en el marco de pila de una función , debajo (en el caso de una pila de inserción descendente) del puntero de pila actual , que está reservada y es segura de usar. Se utiliza con mayor frecuencia en funciones hoja (funciones que no llaman a otras funciones) para asignar memoria adicional en la pila, 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 manejadores 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á protegida contra modificaciones por parte de los manejadores de interrupciones , excepciones o señales . La CPU generalmente desconoce la existencia de la zona roja; sin embargo, en caso de interrupción, cambia a la pila del kernel. Si el propio kernel intentara utilizar la zona roja en un contexto que permite la interrupción, su contenido se destruiría.
Notas y referencias
- ↑ Michael Matz; Jan Hubička; Andreas Jaeger; et al., eds. (2018-01-28). "Interfaz binaria de aplicación System V: Suplemento del procesador de arquitectura AMD64 (con modelos de programación LP64 e ILP32) Versión 1.0" (PDF) . GitHub . 1.0.
- ↑ "Opciones i386 y x86-64: uso de la colección de compiladores GNU (GCC)" . Consultado el 10 de abril de 2011 .
- ↑ "OpenCores Wiki - Cadena de herramientas OpenRISC GNU" . Archivado del original el 28 de mayo de 2014. Consultado el 28 de mayo de 2014 .
- ↑ Fog, Agner (31 de enero de 2021). Convenciones de llamada para diferentes compiladores y sistemas operativos de C++ (PDF) . Dinamarca. pág. 20. Recuperado el 11 de julio de 2021 .
{{cite book}}: CS1 mantenimiento: falta el editor de ubicación ( enlace ) - ↑ Bendersky, Eli (06-09-2011). "Diseño de marco de pila en x86-64" . Sitio web de Eli Bendersky . Consultado el 11-07-2021 .
- 1 2 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 . Recuperado el 11 de julio de 2021 .
- Compiladores
- Esbozos de programación informática