

En informática , un ejecutable es un recurso que una computadora puede usar para controlar su comportamiento. Como toda la información en informática, es un dato , pero distinto de los datos que no implican un flujo de control . [ 2 ] Términos como código ejecutable , archivo ejecutable , programa ejecutable e imagen ejecutable describen formas en las que la información se representa y almacena. Un ejecutable nativo es código máquina y es directamente ejecutable en el nivel de instrucción de una CPU . [ 3 ] [ 4 ] Un script también es ejecutable, aunque indirectamente a través de un intérprete . El código ejecutable intermedio (como el bytecode ) puede ser interpretado o convertido a código nativo en tiempo de ejecución a través de la compilación just-in-time .
ejecutable nativo
Aunque técnicamente es posible escribir un ejecutable nativo directamente en lenguaje máquina, generalmente no se hace. Es mucho más conveniente desarrollar software como código fuente legible por humanos y automatizar la generación de código máquina mediante una cadena de herramientas de compilación . Hoy en día, la mayoría del código fuente está escrito en un lenguaje de alto nivel, aunque todavía es posible usar lenguaje ensamblador , que está estrechamente relacionado con las instrucciones de código máquina. Muchas cadenas de herramientas constan de un compilador que genera código nativo como un conjunto de archivos objeto y un enlazador que genera un ejecutable nativo a partir de los archivos objeto y otros archivos. Para el lenguaje ensamblador, la herramienta de traducción suele llamarse ensamblador en lugar de compilador.
Los archivos objeto se almacenan normalmente en un formato de contenedor digital que admite estructura en el código máquina , como el formato ejecutable y enlazable (ELF) o el ejecutable portátil (PE), según el contexto informático. [ 5 ] El formato puede admitir la segregación del código en secciones como .text (código ejecutable), .data (variables globales y estáticas inicializadas) y .rodata (datos de solo lectura, como constantes y cadenas).
Los archivos ejecutables suelen incluir un sistema de tiempo de ejecución , que implementa características del lenguaje de tiempo de ejecución (como la planificación de tareas , el manejo de excepciones , la llamada a constructores y destructores estáticos, etc.) e interacciones con el sistema operativo, en particular el paso de argumentos, el entorno y la devolución de un estado de salida , junto con otras características de inicio y apagado, como la liberación de recursos como los descriptores de archivo . Para C, esto se hace enlazando el objeto crt0 , que contiene el punto de entrada real y realiza la configuración y el apagado llamando a la biblioteca de tiempo de ejecución . [ 6 ] Por lo tanto, los archivos ejecutables pueden contener código significativo más allá del generado directamente a partir del código fuente. En algunos casos, es deseable omitirlo, por ejemplo, para sistemas embebidos. En C, esto se puede hacer omitiendo el tiempo de ejecución habitual y, en su lugar, especificando explícitamente un script de enlace, que genera el punto de entrada y maneja el inicio y el apagado, como llamar maina para iniciar y devolver el estado de salida al kernel al final. [ 7 ]
Para ser ejecutable, un archivo debe ajustarse a la interfaz binaria de aplicación (ABI) del sistema. En interfaces simples, un archivo se ejecuta cargándolo en la memoria, saltando al inicio del espacio de direcciones y ejecutándolo desde allí. [ 8 ] En interfaces más complejas, los archivos ejecutables tienen metadatos adicionales , que pueden especificar las reubicaciones que se realizarán cuando se cargue el programa, o la dirección del punto de entrada donde comenzar la ejecución. [ 9 ]
Véase también
- Comparación de formatos de archivos ejecutables
- Compresión de ejecutables : método para comprimir un archivo ejecutable.
- Texto ejecutable : código destinado a ser una carga útil para explotar una vulnerabilidad de software. Páginas que muestran breves descripciones de los objetivos de redirección.
- Archivo objeto : archivo que contiene código máquina en formato reubicable.
Referencias
- ^ Celovi, Paul (2002). Libro de cocina de FreeBSD integrado . Elsevier . págs.108 , 187-188 . ISBN 1-5899-5004-6. Consultado el 06-03-2022 .
- ↑ Mueller, John Paul (2007). Administración de Windows desde la línea de comandos para Windows Vista, Windows 2003, Windows XP y Windows 2000. John Wiley & Sons . pág. 24. ISBN 978-0-470-04616-6. Consultado el 6 de marzo de 2023 .
- ↑ "ejecutable" . Diccionario en línea de Merriam-Webster . Merriam-Webster . Consultado el 19 de julio de 2008 .
- ↑ "Instrucciones de máquina" . GeeksforGeeks . 3 de noviembre de 2015. Consultado el 18 de septiembre de 2019 .
- ↑ "Capítulo 4: Archivos objeto" . refspecs.linuxbase.org . Consultado el 18 de septiembre de 2019 .
- ↑ Fisher, Tim. "Lista de extensiones de archivos ejecutables" . lifewire.com . Consultado el 18 de septiembre de 2019 .
- ↑ McKellar, Jessica (2010-03-16). "¡Hola desde un mundo sin libc! (Parte 1)" .
- ↑ Smith, James E. ; Nair, Ravi (2005-05-16). "La arquitectura de las máquinas virtuales" . Computer . 38 (5): 33– 34. doi : 10.1109/MC.2005.173 .
- ↑ Rusling, David A. (1999). "Capítulo 4 – Procesos" . El núcleo de Linux . sec. 4.8.1 – ELF . Recuperado el 6 de marzo de 2023 .
Enlaces externos
- Formato de archivo EXE en ¿Qué es?
- Sistemas de archivos informáticos
- Implementación del lenguaje de programación