El formato ejecutable portable del (el PE) es un formato de archivo para el código de objeto de Executables, y DLLs usado en versiones de 32 bits y 64-bit de los sistemas operativos de Windows el " del término; portable" refiere a la flexibilidad del formato en ambientes numerosos de la arquitectura de los programas del sistema operativo. El formato del PE es básicamente una estructura de datos que encapsula la información necesaria para que el cargador del OS de Windows maneje el código ejecutable envuelto. Esto incluye las referencias dinámicas de la biblioteca para ligar, las tablas de la exportación y de la importación del API, los datos de gerencia de recurso y los datos Roscar-locales del almacenaje (TLS). En sistemas operativos del NT, el formato del PE se utiliza para el EXE, DLL, OBJ, sistema (driver de dispositivo), y otros tipos de archivo. El que los soportes lógico inalterable extensibles interconectan la especificación de indica que el PE es el formato ejecutable estándar en ambientes de EFI.
El PE es una versión modificada del formato de archivo COFF de Unix. PE/COFF es un término alternativo en el desarrollo de Windows.
En sistemas operativos de Windows NT, el PE apoya actual las arquitecturas de sistema de instrucción IA-32, IA-64, y X86-64 (AMD64/Intel64) . Antes del Windows 2000, Windows NT (y así el PE) apoyaron las MIPS, la alfa de la DEC, y arquitecturas de sistema de instrucción de PowerPC . Porque el PE se utiliza en el Windows CE, continúa apoyando varias variantes de la arquitectura de las MIPS, y también apoya el BRAZO (pulgar incluyendo) y arquitecturas de sistema de instrucción de SuperH .
Un archivo del PE consiste en un número de jefes y de secciones que digan a la máquina para hacer chorizos dinámica cómo trazar el archivo en memoria. Una imagen ejecutable consiste en varias diversas regiones, que requieren diversa protección de memoria; el comienzo de cada sección se debe alinear tan con un límite de la página. Por ejemplo, se traza la sección de .text (que lleva a cabo código del programa) se traza típicamente como ejecuta/inalterable, y la sección de .data (variables globales de la tenencia) como ninguno-ejecuta/de lectura/grabación. Sin embargo, evitar perder el espacio, las diversas secciones no son página alineada en disco. La parte del trabajo de la máquina para hacer chorizos dinámica es trazar cada sección individualmente y asignar los permisos correctos a las regiones resultantes, según las instrucciones encontradas en los jefes.
Una sección de nota es la tabla de dirección de la importación del (IAT), que se utiliza como tabla de operaciones de búsqueda cuando el uso está llamando una función de Windows API. Porque un programa compilado no puede conocer la posición de memoria de las bibliotecas que depende sobre, se requiere un salto indirecto siempre que se haga una llamada del API. Como los módulos cargables dinámicos de la máquina para hacer chorizos y los ensambla juntos, él escribe instrucciones de salto en las ranuras de IAT, de modo que señalen a las posiciones de memoria de las funciones de biblioteca correspondientes. Aunque esto agrega un salto adicional sobre el coste de una llamada del intra-módulo, el golpe del funcionamiento es sobre todo insignificante y fácilmente digno de la flexibilidad de bibliotecas dinámicas. Si el recopilador sabe delante de tiempo que una llamada estará entre módulos (vía una cualidad del dllimport) él puede producir un código optimizado ese da lugar simplemente a un opcode indirecto de la llamada.
Los archivos del PE no contienen el código de la Posición-independiente. En lugar se compilan a una dirección baja del preferred, y todas las direcciones emitidas por el recopilador/la máquina para hacer chorizos son fijas delante de tiempo. Si un archivo del PE no se puede cargar en su dirección preferred (porque es tomado ya por el algo más), el sistema operativo rebase él. Esto implica el recalcular de cada dirección absoluta y el modificar del código para utilizar los nuevos valores. El cargador hace esto comparando las direcciones preferred y reales de la carga, y calculando un valor del delta . Esto entonces se agrega a la dirección preferred para subir con la nueva dirección de la posición de memoria. Las relocalizaciones bajas se almacenan en una lista y se agregan, según lo necesitado, a una posición de memoria existente. El código resultante es privado ahora al proceso y no más compartible, así que muchas de las ventajas del ahorro de la memoria de DLLs se pierden en este panorama. También retrasa el cargamento del módulo perceptiblemente. Por esta razón el rebasing debe ser evitado donde sea posible, y el DLLs enviado por Microsoft tiene direcciones bajas pre-computadas para no traslaparse. En no rebase el PE del caso por lo tanto tiene la ventaja del código muy eficiente, pero en presencia de rebasing el golpe del uso de la memoria puede ser costoso. Poner en contraste esto con el DUENDE que utiliza completamente código independiente de la posición y una tabla global de la compensación, que negocia de tiempo de ejecución contra uso de la memoria a favor de estes 3ultimo.NET, meta datos, y el formato del PE El marco .NET de Microsoft ha ampliado el formato del PE con las características que apoyan el tiempo de pasada (una puesta en práctica del lenguaje común de la máquina virtual de . Entre las adiciones están un jefe de CLR y sección de los datos de CLR. Sobre la carga de un binario, la ejecución de las producciones del cargador del OS al CLR vía una referencia en la tabla de la IMPORTACIÓN de PE/COFF. El CLR VM entonces carga las secciones del jefe y de los datos de CLR.
La sección de los datos de CLR contiene dos segmentos importantes: Código de los meta datos y de lengua (IL) intermedia:
Los meta datos contienen la información relevante a la asamblea, incluyendo la asamblea manifesta. Un manifesto describe a asamblea detalladamente incluyendo la identificación única (vía un picadillo, un número de versión, un etc.), datos sobre componentes exportados, tipo extenso información (apoyada por el tipo común sistema (CTS)), referencias externas, y una lista de archivos dentro de la asamblea. El ambiente de CLR hace el uso extenso de meta datos.
Se abstrae el código (IL) de lengua intermedia, el código independiente del lenguaje que satisface el requisito común de la lengua intermedia (CIL) de . El " del término; Intermediate" refiere a la naturaleza del código de IL que es en las diferentes lenguas y a la cruz-plataforma compatible. Esta lengua intermedia, similar al Bytecode en el Java, permite que las plataformas y las idiomas apoyen el . IL apoya la programación orientada al objeto (polimorfismo, herencia, tipos abstractos, etc.), excepciones, acontecimientos, y varias estructuras de datos. IL cifra está montado en un PE de .NET para la ejecución por el CLR.
Mientras que la mono plataforma del desarrollo se prepone ser compatible binario con el Microsoft .NET, utiliza el mismo formato del PE que la puesta en práctica de Microsoft.
En el X86, Unix-como sistemas operativos de puede ejecutar los binarios de Windows (en formato del PE) con el vino .
el OS X del mac 10.5 tiene la capacidad de cargar y de analizar archivos del PE, pero no es compatible binario con Windows.
| Random links: | Lulav | Lente intraocular | Ümlaut | Cerero de Helen | La vuelta de los héroes del cóndor |