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).

Los trampolines (a veces denominados vectores de salto indirecto ) son ubicaciones de memoria que contienen direcciones que apuntan a interrumpir rutinas de servicio, 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:

El estilo de paso de continuación es un formato intermedio popular para compiladores de lenguajes de funciones, porque muchas construcciones de flujo de control se pueden expresar con elegancia y la optimización de la llamada final es fácil. Cuando se compila en un lenguaje sin llamadas de cola optimizadas, se puede evitar el crecimiento de la pila mediante una técnica llamada trampolín. La idea es no hacer la llamada de continuación final dentro de la función, sino salir y devolver la continuación a un trampolín. Ese trampolín es simplemente un bucle que invoca las continuaciones devueltas. Por lo tanto, no hay llamadas a funciones anidadas y la pila no crecerá. [2]

Algunas implementaciones de trampolines provocan una pérdida de pilas sin ejecución (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 en la pila. El trampolín requiere que la pila sea ejecutable.

Las pilas sin ejecución y las funciones anidadas se excluyen mutuamente en GCC. Si se utiliza una función anidada en el desarrollo de un programa, la pila NX se pierde silenciosamente. GCC ofrece la advertencia -Wtrampolines para alertar sobre la condición.

El software diseñado con 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]