lunes, 29 de junio de 2009

exe


Los ficheros EXE constan de una cabecera seguida de los segmentos definidos en el códigofuente. Los datos de la cabecera son utilizados por el sistema operativo para realizar lasinicializaciones necesarias para el correcto funcionamiento del programa, aunque dichaestructura no forma parte de la imagen final del programa en memoria. El contenido de lacabecera de un fichero EXE es el siguiente:• Posición 0 (2 bytes): caracteres “MZ” o “ZM” identificativos del formato EXE.• Posición 2 (2 palabras): tamaño del fichero. La primera palabra es el número de bytes del último sector. La segunda palabra es el número de sectores que ocupa el fichero (cada sector ocupa 512 bytes). De esta forma, el tamaño del fichero en bytes se calcula como (nsectores- 1)*512+nbytes.• Posición 6 (1 palabra): número de reubicaciones a realizar. Esto es, número de referencias a segmentos reales que hay que modificar cuando el programa se cargue en memoria. Éste es el caso del segundo operando de la instrucción MOV AX, DATOS. Las direcciones de dichas referencias se encuentran disponibles en la denominada tabla de reubicaciones, incluida en la cabecera de un fichero EXE.• Posición 8 (1 palabra): tamaño de la cabecera en párrafos (1 párrafo = 16 bytes).• Posición 10 (1 palabra): mínima cantidad de memoria en párrafos requerida por el programa en adición a lo que ocupa en disco.• Posición 12 (1 palabra): máxima cantidad de memoria requerida en párrafos.• Posición 14 (2 palabras): valores iniciales de SS (primera palabra) y SP (segunda palabra).• Posición 18 (1 palabra): palabra de comprobación. El DOS no suele utilizarla, de hecho la herramienta TLINK no la genera.• Posición 20 (2 palabras): valores iniciales de CS (segunda palabra) e IP (primera palabra).• Posición 24 (1 palabra): posición donde comienza la tabla de reubicación. Cada entrada de la tabla ocupa 4 bytes (desplazamiento y segmento) y contiene la dirección de las palabras a reubicar (a cada una hay que sumarle el valor de segmento en el que se cargue el programa).• Posición 26 (1 palabra): número de overlay. Es 0 cuando se trata de un programa principal.• Posición 28-61: valores desconocidos (dependientes del compilador

No hay comentarios:

Publicar un comentario