COFF

El acrónimo COFF (del inglés C ommon o bject F F F orat) indica las especificaciones de algunos tipos de archivos utilizados en los sistemas operativos Unix : archivos ejecutables, archivos de código objeto y archivos de biblioteca compartida. COFF fue introducido en UNIX system IV y fue la base para los formatos extendidos XCOFF y ECOFF, antes de ser reemplazado por el formato ELF, introducido con UNIX System v. Sin embargo, COFF y sus variantes siguen siendo utilizados en algunos sistemas Unix - like y en Microsoft Windows.

El formato original de Unix para los archivos de código objeto, llamado a. out, tenía una estructura muy simple, inadecuada para tecnologías como la depuración simbólica y las bibliotecas compartidas. Desde que el desarrollo de sistemas tipo Unix tuvo lugar en diferentes ubicaciones (dentro y fuera de AT& T) se implementaron diferentes soluciones para superar las limitaciones de un. out. COFF fue introducido en UNIX System V, producido por AT & amp; T, para plataformas de 32 bits no VAX como el 3B20. Las mejoras en el formato A. out existente de AT& T incluyeron soporte nativo para: sin embargo, aunque COFF fue una mejora sobre a. fuera, la arquitectura era todavía demasiado limitada: había un límite en el número máximo de secciones, un límite en la longitud de los nombres de sección, y el soporte para insertar información para la depuración simbólica no era compatible con nuevos lenguajes como c++. Para superar estas limitaciones, AT & amp; T con el lanzamiento de System V Release 4 también lanzó el formato ELF; IBM usó el formato XCOFF en Aix, DEC, SGI y otros usaron el formato ECOFF; otros sistemas mejoraron sus propietarios de formatos ejecutables y no portables a otras plataformas. Mientras que las versiones extendidas de COFF continúan siendo usadas en muchas plataformas Unix, principalmente sistemas embebidos, quizás el uso más masivo del formato COFF hoy en día es el hecho en Windows, con su formato PE. Desarrollado para Windows NT, el formato PE (a veces referido como PE/COFF) utiliza un esquema de encabezado COFF para los archivos objeto, y en los archivos ejecutables el esquema de encabezado COFF se inserta en el esquema de encabezado PE más grande.

La principal mejora de COFF sobre a. out fue la introducción de secciones más nombradas en el archivo objeto. Diferentes archivos objeto pueden tener diferentes cantidades y tipos de secciones. La información para la depuración simbólica de archivos COFF consiste en nombres simbólicos (cadenas) asociados con funciones y variables del programa, e información sobre números de línea, utilizados para establecer y rastrear durante la ejecución. El tamaño a. out no proporcionó soporte nativo para la depuración simbólica, aunque este límite podría superarse parcialmente utilizando mecanismos como stabs (entradas de tabla de símbolos). Los nombres simbólicos se mantienen en la tabla de símbolos. Cada entrada de la tabla de símbolos incluye nombre, Clase de almacenamiento, tipo, valor y número de sección. Los nombres cortos (ocho caracteres o menos) se guardan directamente en la tabla de Símbolos; los nombres largos se guardan como direcciones que apuntan a la tabla de cadenas al final del objeto COFF. La clase de almacenamiento describe el tipo de entidad que representa el símbolo, que puede ser c_ext (variable externa), c_auto (variable de pila automática), c_reg (variable de registro), c_fcn (función)) y muchos otros. El tipo prescribe cómo se debe interpretar el valor asociado con el símbolo, y se puede reconocer cada uno de los tipos de C. Cuando se compila con las opciones apropiadas, un archivo objeto COFF contiene información sobre la línea numérica para cada posible punto de interrupción presente en el texto del archivo objeto. La información del número de línea viene en dos formas: en la primera, para cada posible punto de interrupción, la entrada en la tabla de números de línea contiene la dirección del punto de interrupción y el número de línea correspondiente. En la segunda forma, la entrada a su vez indica una entrada de tabla de símbolos que representa el inicio de una función, lo que permite establecer un punto de interrupción utilizando el nombre de la función en sí. Tenga en cuenta que el formato COFF no era capaz de representar números de línea o Símbolos de depuración por fuente incluida con los archivos de cabecera haciendo que la información de depuración del archivo COFF prácticamente inútil sin el uso de extensiones incompatibles. Cuando se genera un archivo COFF, generalmente no se sabe en qué parte de la memoria se cargará. La dirección virtual donde se cargará el primer byte del archivo se denomina dirección base del archivo de imagen. El resto del archivo no estará necesariamente presente en un bloque de memoria contiguo, sino en diferentes secciones de memoria. La dirección virtual relativa (RVA) no debe confundirse con las direcciones virtuales comunes. Una dirección RVA es la dirección virtual de un objeto de archivo una vez que se ha cargado en la memoria, menos la dirección base del archivo de imagen. Si el archivo necesita ser mapeado fielmente desde el disco a la memoria, el RVA será idéntico al desplazamiento en el archivo, pero esto es realmente bastante inusual. Tenga en cuenta que el término RVA solo se utiliza para objetos en el archivo de imagen. Una vez cargado en la memoria, se agrega la dirección base del archivo de imagen y se utilizan las direcciones virtuales ordinarias.

Formatos de archivo ejecutables

Formato ejecutable y enlazable

El formato ejecutable y enlazable (abreviado Elf, anteriormente llamado Extensible Linking Format), en Ciencias de la computación, es un formato de archivo está...
Esta página se basa en el artículo de Wikipedia: Fuente, Autores, Licencia Creative Commons Reconocimiento-CompartirIgual.
This page is based on the Wikipedia article: Source, Authors, Creative Commons Attribution-ShareAlike License.
contactos
Política de privacidad , Descargos de responsabilidad