
75-08 Sistemas Operativos Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Facultad de Ingeniería Universidad de Buenos Aires LinkersLinkers Uso del Linker (a) Traducción Programa Fuente 1 Programa Objeto 1 Traductor Programa Fuente 2 Programa Objeto 2 Traductor Programa Fuente 3 Programa Objeto 3 75-08 Sistemas Operativos 2 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Traducción - ensamblado ● Si el lenguaje es un assembler, la traducción es un ensamblado (assembly) hecho por un programa ensamblador (assembler). – Convierte código de lenguaje ensamblador memotécnico a códigos de operación. – Resuelve identificadores a posiciones de memoria. – Algunos proveen abstracciones de programación avanzadas. – Existe un assembler distinto para cada arquitectura, incluso hay assemblers generales 75-08 Sistemas Operativos 3 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Traducción - Compilación ● Si se trata de un lenguaje de alto o mediano nivel, la traducción es una compilación. ● Un Libro online sobre compiladores del curso de Leonidas Fegaras. 75-08 Sistemas Operativos 4 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Link-Editor Mezcla las direcciones de cada módulo Programa Objeto 1 en un único espacio de direcciones. Programa Objeto 2 Linker Programa Ejecutable Además de ejecutable la salida puede ser: ● Programa Objeto 3 Otro programa objeto ● Una biblioteca La entrada puede ser también ● Un ejecutable ● Una biblioteca 75-08 Sistemas Operativos 5 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Loader Memoria Programa Ejecutable Loader Ejecutable Se llama binding al proceso de resolver El binding Bibliotecas las llamadas a puede hacerse en Bibliotecas funciones de biblioteca ejecución Bibliotecas En algunos sistemas, el compilador llama ya cargadas al linker (gcc llama a ld) 75-08 Sistemas Operativos 6 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Compilando Paso 1 TXT Paso 2 00 Start a .... 00 Start a Procedure a() 20 LR 1,addr(j) .... integer j; 24 ADD, 1,=10 20 LR 1,04 begin 28 ST 1,addr(j) 24 ADD, 1,08 .... ... 28 ST 1,04 j=j+10; 60 CALL B ... ... ... 60 CALL B b() 96 END ... end; DATA Relocation Dictionary RLD 00 Data a El código objeto 04 DS (j) Loc Symbol Pos contiene, entre otras 08 DC 10 #=10 23 j 04 ... cosas, TXT, DATA, 76 End Data a 27 =10 08 RLD 31 j 04 63 B ? 75-08 Sistemas Operativos 7 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Compilando (2) TXT 00 Start b Relocation Dictionary .... RLD Procedure b() 36 LR 1,08 integer j; Loc Symbol Pos begin 40 ST 1,04 .... ... 39 =34 08 j=34; 43 j 04 ... end; Exports Table ExT DATA Loc Symbol El espacio de direcciones de 00 Data b 00 b b( ) es distinto del de a( ) 04 DS (j) 08 DC 34 (=34) ... La ExT es otro componente del objeto 75-08 Sistemas Operativos 8 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio 00 Start a .... Linkeando 20 LR 1,04 00 Start b 24 ADD, 1,08 .... 28 ST 1,04... 36 LR 1,08 60 CALL B 40 ST 1,04 ... ... 96 END 00 Data b 00 Data a 04 DS (j) 04 DS (j) 08 DC 34 (=34) 08 DC 10 #=10 Link-editor ... ... 76 End Data a Loc Symbol Pos 39 =34 08 Loc Symbol Pos 43 j 04 23 j 04 Loc Symbol 27 =10 08 00 b 31 j 04 en el próximo 63 B ? slide .... Loc Symbol 00 a 75-08 Sistemas Operativos 9 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Linkeando (2) TXT DATA RLD 00 Data a Loc Symbol Pos 00 Start a 04 DS (j) 23 j 04 .... 08 DC 10 #=10 27 =10 08 20 LR 1,04 ... 31 j 04 24 ADD, 1,08 76 End Data a 63 B 100 28 ST 1,04... Se 60 CALL 100 80 Data b 139 =34 88 puede ... 84 DS (j) 143 j 84 resolver 96 END 88 DC 34 (=34) el ... llamado ExT 100 Start b El linker mezcló los a B() .... espacios de Loc Symbol 136 LR 1,88 00 a 140 ST 1,84 direcciones de los ... dos procedimientos 100 b en uno solo (relocación) 75-08 Sistemas Operativos 10 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Object file formats (OFF) ● Es clave para la performance del sistema. ● Algunos preveen su interacción con el paginado. ● Se suele utilizar el mismo formato para: – Ejecutables – Objetos – Bibliotecas ● Que dos Sistemas Operativos tengan el mismo OFF no significa que los programas de uno puedan correr en el otro. 75-08 Sistemas Operativos 11 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio DOS com ● Son los que tienen extensión .com. Microsoft los llama bin o binary file ● Se hacen con exe2bin. ● Se cargan en una dirección fija de memoria (0x100). ● Datos y código estan en el mismo segmento. ● Su tamaño máximo es de 65,280 (0xFF00) bytes ● Se puede decir que es un “null file format” 75-08 Sistemas Operativos 12 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio DOS exe File Header ● Aparece en DOS 2.0. RLD ● Su primer byte o (Magic number) es Imagen binaria del TXT “MZ”, iniciales de Mark Zbikowski. ● Tiene previsión para relocación en memoria.. 75-08 Sistemas Operativos 13 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Header del DOS .exe char signature[2] = "MZ"; // magic number short lastsize; // # bytes used in last block short nblocks; // number of 512 byte blocks short nreloc; // number of relocation entries short hdrsize; // size of file header in 16 byte paragraphs short minalloc; // minimum extra memory to allocate short maxalloc; // maximum extra memory to allocate void far *sp; // initial stack pointer short checksum; // ones complement of file sum void far *ip; // initial instruction pointer short relocpos; // location of relocation fixup table short noverlay; // Overlay number, 0 for program char extra[]; // extra material for overlays, etc. void far *relocs[]; // relocation entries, starts at relocpos 75-08 Sistemas Operativos 14 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Common Object File Format COFF ● Aparece en Unix pero se usa en otros ambientes. ● Se compone de varias secciones separadas por headers (con limitación de longitud). ● Se usa para bibliotecas. – Aunque no de enlace dinámico. AIX usa XCOFF ● Soporta debug (pero solo de C). ● nm(1) lo puede inspeccionar. 75-08 Sistemas Operativos 15 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Windows Portable Executable (PE ) ● Es una adaptación del COFF. El Windows hace un wrapping del COFF. ● Se usa en Intel, ARM y SuperH (Windows CE). ● Además Intel lo adoptó para EFI. ● Microsoft también lo usa en .net para la máquina virtual Common Language Runtime . ● Mono lo debió adoptar (quiere ser compatible a nivel binario con .net). 75-08 Sistemas Operativos 16 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio PE de Microsoft ● Su magic es “PE” pero comienza con un “MZ” por “compatibilidad”. ● Tiene definido espacio para resources. ● Tiene definido tablas para el uso de bibliotecas compartidas. ● Hay herramientas de análisis. ● En 64 bits se lo conoce como PE+ o PE32+ 75-08 Sistemas Operativos 17 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio PE de Microsoft ● No tiene PIC (Position-Independent Code) ● Todas las direcciones se fijan en referencia a una dirección base. ● Si esa dirección ya lo uso “otro” se deben recalcular todas las direcciones. ● Las DLLs de Microsoft tiene una dirección base predefinida para que no colisionen entre sí. 75-08 Sistemas Operativos 18 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Executable and Linkable Format (ELF) ● Sirve para ejecutables y bibliotecas. ● Un directorio permite agregar nuevas secciones. ● Tiene previsiones para emulación – Linux, Solaris, IRIX, Referencias: La especificación FreeBSD, NetBSD, y man elf(5). OpenBSD, PlayStation 75-08 Sistemas Operativos 19 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Binarios Universales ● Mac usa la idea en 2005 para facilitar el pase de PPC a Mactel. – Ya la había usado al pasar de 68k a PPC. ● Se basa en el concepto de fat binary. El formato es Mach-O. – Puede usar un emulador: Rosetta – Puede tener código ppc-32,ppc-64 y x86-64 EM64T 75-08 Sistemas Operativos 20 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio.
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages20 Page
-
File Size-