stringtranslate.com

Trampolín (informática)

En programación informática , 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 indirecto ) 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 salta inmediatamente hacia afuera, 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 de no ejecución (pila NX). En la Colección de compiladores GNU (GCC), en particular, una función anidada crea 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 en la pila. El trampolín requiere que la pila sea ejecutable.

Las pilas de no ejecución y las funciones anidadas son mutuamente excluyentes en GCC. Si se utiliza una función anidada en el desarrollo de un programa, la pila NX se pierde silenciosamente. GCC ofrece una -Wtrampolinesadvertencia para alertar sobre 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 NX. [11]

Véase también

Referencias

  1. ^ Baker, Henry G. (septiembre de 1995). "CONS no debería CONS en sus argumentos, parte II: Cheney sobre la MTA" ACM SIGPLAN Notices . 30 (9): 17–20. doi :10.1145/214448.214454. S2CID  20720831. Archivado desde el original el 11 de noviembre de 2016.
  2. ^ ab Muller, Hans (31 de enero de 2005). "Afirmar el control sobre la interfaz gráfica de usuario: comandos, valores predeterminados y paquetes de recursos". today.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). "Thunking en Win32 con C++". Archivado desde el original el 15 de octubre de 2012.
  5. ^ Weiher, Marcel (2004). "Higher Order Messaging (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". StackOverflow . Archivado desde el original el 29 de marzo de 2016 . Consultado el 26 de mayo de 2018 .
  7. ^ "Trampolines para funciones anidadas". Uso de 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". Uso de 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; Wall, Kevin (2018-03-02) [2013]. "Endurecimiento de la cadena de herramientas basada en C". Proyecto de seguridad de aplicaciones web abiertas (OWASP). Archivado desde el original el 2018-05-27 . Consultado el 2018-03-02 .