binary - sirven - que tipo de archivo es exe
¿Qué contiene realmente el archivo ejecutable? (6)
¿Qué contiene realmente el ejecutable? .. ¿Contiene instrucciones para procesar en forma de Opcode y Operandos? Si es así, ¿por qué tenemos diferentes ejecutables para diferentes sistemas operativos?
Como el implícito en su respuesta, un archivo ejecutable contiene llamadas a rutinas en el sistema operativo.
Sería extremadamente ineficiente que un archivo ejecutable intente implementar funciones ya proporcionadas por el sistema operativo (por ejemplo, escribir en el disco, aceptar entradas), por lo que se hace un uso intensivo de las llamadas a las funciones del sistema operativo.
Los diferentes sistemas operativos proporcionan funciones que hacen cosas similares, pero los detalles de cómo llamar a esas funciones (y dónde están) pueden ser diferentes.
Entonces, aparte de las principales diferencias de tipo de procesador, los ejecutables escritos para un sistema operativo no funcionarán con otro.
Compruebe estos enlaces también:
Los procesadores entienden los programas en términos de códigos de operación, por lo que su intuición acerca de los ejecutables que contienen códigos de operación es correcta, y adivinó correctamente que cualquier ejecutable debe tener códigos de operación y operandos para ejecutar el programa en un procesador.
Sin embargo, la mayoría de los programas se ejecutan con la ayuda de sistemas operativos (puede escribir programas que no usen un sistema operativo para ejecutar, pero eso sería una gran cantidad de trabajo innecesario), que proporcionan abstracciones sobre el hardware que los programas pueden usar. El sistema operativo es responsable de configurar un "contexto" para que se ejecute cualquier programa, es decir, proporcionar al programa la memoria que necesita, proporcionar bibliotecas de propósito general que el programa pueda usar para hacer cosas comunes como escribir en archivos, imprimir en la consola, etc.
Sin embargo, para configurar el contexto para el programa (proporcionarle memoria, cargar sus datos, configurar una pila para él), el sistema operativo necesita leer el archivo ejecutable de un programa y necesita saber algunas cosas sobre el programa, como los datos. que el programa espera usar, el tamaño de esos datos, los valores iniciales almacenados en esa región de datos, la lista de códigos de operación que forman el programa (también llamada región de texto de un proceso), su tamaño, etc. Todos estos datos y dentro del archivo ejecutable se almacena mucho más (información de depuración, datos de solo lectura, como cadenas codificadas en el programa, tablas de símbolos, etc.). Cada sistema operativo comprende un formato diferente de este archivo ejecutable, ya que esperan que toda esta información se almacene en el ejecutable de diferentes maneras. Echa un vistazo a los enlaces proporcionados por Groo.
Un par de formatos que se han utilizado para almacenar información en un archivo ejecutable son ELF y COFF en sistemas UNIX y PE en Windows.
PD: no todos los programas necesitan formatos ejecutables. Busque los cargadores de arranque en Google. Estos son programas especiales que ocupan el primer sector de una partición de inicio en el disco duro y se utilizan para cargar el sistema operativo en sí.
Para hacer cualquier forma de IO, un ejecutable debe interactuar con el sistema operativo mediante sys-calls. en Windows estas son llamadas a la API de Win32 y en linux / unit son en su mayoría llamadas posix.
Además, el formato de archivo ejecutable difiere con el sistema operativo de la misma manera que un archivo PNG difiere de un archivo GIF. los datos se ordenan de forma diferente y hay diferentes encabezados y subencabezados.
Sí, código en forma de códigos de operación y operandos, y datos, por supuesto. Todo lo que quiera hacer que involucre al sistema operativo de alguna manera depende del sistema operativo, no de la CPU. Es por eso que necesita diferentes programas para diferentes sistemas operativos. Abrir una ventana en Windows no se realiza con la misma secuencia de instrucciones que en Linux, y así sucesivamente.
Un archivo ejecutable contiene varios blobs de datos e instrucciones sobre cómo se deben cargar los datos en la memoria. Algunas de estas secciones contienen código de máquina que se puede ejecutar. Otras secciones contienen datos del programa, recursos, información de reubicación, información de importación, etc.