75-08 Sistemas Operativos Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio

Facultad de Ingeniería Universidad de Buenos Aires LinkersLinkers Uso del (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 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 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 (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