stringtranslate.com

Trampolín (informática)

En programación de computadoras , la palabra trampolín tiene varios significados y generalmente se asocia con instrucciones de salto (es decir, moverse a diferentes rutas de código).

Programación de bajo nivel

Los trampolines (a veces denominados vectores de salto indirectos ) son ubicaciones de memoria que contienen direcciones que apuntan a rutinas de servicio de interrupción , rutinas de E/S , etc. La ejecución salta al trampolín y luego inmediatamente salta o rebota, de ahí el término trampolín . Tienen muchos usos:

Programación de alto nivel

Pilas sin ejecución

Algunas implementaciones de trampolines provocan una pérdida de pilas no ejecutables (pila NX). En la colección de compiladores GNU (GCC) en particular, una función anidada construye un trampolín en la pila en tiempo de ejecución y luego llama a la función anidada a través de los datos de la pila. El trampolín requiere que la pila sea ejecutable.

Las pilas que no se ejecutan y las funciones anidadas se excluyen mutuamente según GCC. Si se utiliza una función anidada en el desarrollo de un programa, entonces la pila NX se pierde silenciosamente. GCC ofrece la -Wtrampolinesadvertencia para alertar de la condición.

El software diseñado utilizando un ciclo de vida de desarrollo seguro a menudo no permite el uso de funciones anidadas debido a la pérdida de pilas de NX. [11]

Ver también

Referencias

  1. ^ Baker, Henry G. (septiembre de 1995). "Los CONTRAS no deberían contrarrestar sus argumentos, Parte II: Cheney sobre la MTA" Avisos de ACM SIGPLAN . 30 (9): 17–20. doi :10.1145/214448.214454. S2CID  20720831. Archivado desde el original el 11 de noviembre de 2016.
  2. ^ ab Müller, Hans (31 de enero de 2005). "Afirmar el control sobre la GUI: comandos, valores predeterminados y paquetes de recursos". hoy.java.net . Trampolines . Consultado el 6 de noviembre de 2015 .[1]
  3. ^ "Trampolines". Proyecto Mono. 8 de octubre de 2022.
  4. ^ Stangvik, Einar Otto (16 de agosto de 2006). "Pensar en Win32 con C++". Archivado desde el original el 15 de octubre de 2012.
  5. ^ Weiher, Marcel (2004). "Mensajería de orden superior (HOM)" (PDF) . Archivado (PDF) desde el original el 27 de mayo de 2018 . Consultado el 26 de mayo de 2018 .
  6. ^ fuz (18 de noviembre de 2011). "Implementación de funciones anidadas". Desbordamiento de pila . Archivado desde el original el 29 de marzo de 2016 . Consultado el 26 de mayo de 2018 .
  7. ^ "Trampolines para funciones anidadas". Usando la colección de compiladores GNU (GCC) . 2018 [2002]. 18.11. Archivado desde el original el 27 de mayo de 2018 . Consultado el 26 de mayo de 2018 .
  8. ^ "Funciones anidadas". Usando la colección de compiladores GNU (GCC) . 2018 [2002]. 6.4. Archivado desde el original el 27 de mayo de 2018 . Consultado el 26 de mayo de 2018 .
  9. ^ Breuel, Thomas M. (2013). "Cierres léxicos para C++" (PDF) . Archivado (PDF) desde el original el 12 de diciembre de 2017 . Consultado el 26 de mayo de 2018 .
  10. ^ Walton, Jeffrey; Manico, Jim; Muro, Kevin (2 de marzo de 2018) [2013]. "Endurecimiento de la cadena de herramientas basado en C". El Proyecto de Seguridad de Aplicaciones Web Abiertas (OWASP). Archivado desde el original el 27 de mayo de 2018 . Consultado el 2 de marzo de 2018 .