Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

39
Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN

Transcript of Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Page 1: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 1© Jaime Alberto Parra Plaza

CLASE 19

BIBLIOTECAS Y

ARCHIVOS DE INCLUSIÓN

Page 2: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 2© Jaime Alberto Parra Plaza

Ya se ha visto que, para ayudar en la estructuración de un programa, están disponibles dos utilidades: procedimientos y macros.

Sin embargo, esto no soluciona otro problema que continúa en los archivos grandes, y es que el tiempo que se requiere para su desarrollo aumenta exponencialmente ante un crecimiento lineal del programa:

Page 3: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 3© Jaime Alberto Parra Plaza

Tamaño del Archivo

Tiempo de Desarrollo

Tiempo de Desarrollo de un Programa en función del Tamaño del archivo:

Page 4: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 4© Jaime Alberto Parra Plaza

Esto se debe a que todas las actividades se tardan más en desarrollar para un archivo grande que para uno pequeño. En primer lugar, el tiempo de edición, ensamblaje, enlace y carga aumenta. En segundo lugar, el tiempo que gasta el programador para manipular, entender y depurar un programa grande también aumenta. Multiplicando estos factores aparece la alinealidad de la relación tiempo versus tamaño.

Page 5: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 5© Jaime Alberto Parra Plaza

Se desea, entonces, hallar formas de reducir este tiempo. Para ello, se parte de las siguientes reflexiones:

• Manipular archivos pequeños es mejor y más rápido que manipular archivos grandes, tanto para la máquina como para las herramientas como para el programador.

Page 6: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 6© Jaime Alberto Parra Plaza

• No es inteligente reensamblar todo un archivo para detectar si una nueva línea de código es correcta. Lo correcto sería reensamblar sólo el procedimiento al cual pertenece.

Ambas reflexiones llevan a deducir que la clave para optimizar el proceso de desarrollo consiste en fraccionar un programa grande y manejar cada porción con cierta independencia.

Page 7: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 7© Jaime Alberto Parra Plaza

PROYECTO:

El proceso de fraccionar un archivo grande en otros menores y trabajar con cada uno por separado se denomina proyecto.

Aquí, el archivo fuente se divide en varios subarchivos y cada uno de ellos se ensambla para obtener un módulo, los módulos se fusionan para lograr el archivo ejecutable correspondiente al fuente original.

Page 8: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 8© Jaime Alberto Parra Plaza

Archivo Ejecutable

Archivo 1

Archivo 2

Archivo n

. . .

Módulo 1

Módulo 2

Módulo n

. . .

Gran Programa

Ensamblaje EnlaceParticionado

Page 9: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 9© Jaime Alberto Parra Plaza

La primera pregunta que surge es cómo partir el programa. Lo recomendable aquí es hacer que cada archivo contenga un grupo dado de procedimientos, en lo posible relacionados entre sí.

Si tal archivo se le pasa al ensamblador, éste genera el archivo objeto correspondiente, que se conoce como un módulo.

Page 10: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 10© Jaime Alberto Parra Plaza

Lo importante de este mecanismo es que el ensamble de un archivo que sea sintácticamente correcto se hace sólo

una vez. El módulo obtenido queda entonces listo para enlazarse con otros módulos, de esta forma, el tiempo de ensamble se reduce, de ensamblar todo el proyecto a ensamblar sólo el módulo en el cual se está trabajando actualmente.

Page 11: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 11© Jaime Alberto Parra Plaza

Para que esto funcione se requiere solucionar un nuevo problema:

¿Qué debe hacer el ensamblador cuando un procedimiento invoque a otro procedimiento que está en otro archivo?

Page 12: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 12© Jaime Alberto Parra Plaza

Proyecto Archivo 1

Archivo k

proc1

call proc2

proc2

proc1

call proc2

proc2

Page 13: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 13© Jaime Alberto Parra Plaza

Dado que un procedimiento se identifica por su dirección de inicio, el ensamblador en realidad no necesita saber en qué archivo está el procedimiento llamado.

Sólo necesita saber que en alguna parte existe. Es labor del enlazador ubicar su dirección real y remplazarla cuando genere el archivo ejecutable.

Dos directivas del ensamblador ayudan a esta labor:

Page 14: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 14© Jaime Alberto Parra Plaza

EXTRN Y PUBLIC:

EXTRN = External. Indica que el elemento que sigue es declarado externamente al archivo. Aplicable a procedimientos y variables.

PUBLIC = El elemento mencionado (procedimiento o variable) va a ser usado fuera del archivo en que se crea, es decir, es un elemento público.

Page 15: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 15© Jaime Alberto Parra Plaza

EXTRN:

Las variables y procedimientos externos deben declararse al comienzo del archivo indicando su tamaño (variables) o su alcance (procedimientos), siguiendo la sintaxis:

EXTRN variable:TAMAÑO

EXTRN procedimiento:ALCANCE

Page 16: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 16© Jaime Alberto Parra Plaza

PUBLIC:

Las variables o procedimientos que quieran hacerse públicos deben declararse como tales al comienzo del segmento al cual pertenecen, de la forma:

PUBLIC variable

PUBLIC procedimiento

Page 17: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 17© Jaime Alberto Parra Plaza

Aplicado al ejemplo anterior, la convención sería:

Archivo 1 Archivo k

EXTRN proc2:NEAR PUBLIC proc2

proc1

call proc2

proc2

Page 18: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 18© Jaime Alberto Parra Plaza

La directiva EXTRN le dice al ensamblador que proc2 existe en alguna parte externa al archivo actual, así que suponga que existe y deje su dirección vacía para que sea llenada por el enlazador.

La directiva PUBLIC instruye al ensamblador para que genere una tabla en el módulo objeto con las direcciones de todos los elementos declarados públicos.

Dicha tabla será útil para que el enlazador pueda unir las partes.

Page 19: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 19© Jaime Alberto Parra Plaza

EXTRN proc2:NEAR

proc1

call proc2 call ??1

??1 = proc2

proc2

PUBLIC proc2 proc2 = 125H:14H

proc2

Labores que hace el Ensamblador:

Page 20: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 20© Jaime Alberto Parra Plaza

Labores que hace el Enlazador:

call ??1

??1 = proc2

proc2 = 125H:14H

proc2

call 125H:14H

Page 21: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 21© Jaime Alberto Parra Plaza

El esquema dado es útil, pero adolece de dos inconvenientes:

a. Debe recordarse cuáles son todos los procedimientos que son externos y declararlos como tales al inicio del archivo.

b. El enlazador fusiona los módulos completos uno tras otro, ya sea que los procedimientos que existen en ellos se usen o no.

Page 22: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 22© Jaime Alberto Parra Plaza

Archivos de inclusión y Bibliotecas:

Ambos problemas se han ya solucionado y dan justamente título a esta conferencia: los archivos de inclusión y las bibliotecas.

Page 23: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 23© Jaime Alberto Parra Plaza

Es un archivo tipo texto asociado con un módulo y que puede contener tres clases de información:

• Declaración de constantes.

• Declaración e implementación de macros.

• Declaración de procedimientos.

ARCHIVO DE INCLUSIÓN:

Page 24: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 24© Jaime Alberto Parra Plaza

La directiva INCLUDE instruye al ensamblador para que incluya o añada el contenido del archivo indicado al archivo actual antes de hacer el ensamblaje del conjunto.

Normalmente, los archivos de inclusión se identifican con la extensión .INC.

Page 25: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 25© Jaime Alberto Parra Plaza

A continuación se muestra un ejemplo donde aparecen los tres archivos fuentes típicos en un programa fragmentado en varios archivos:

• El archivo de inclusión (macros y prototipos de procedimientos)

• El archivok fuente (código de los procedimientos del fragmento k-ésimo)

• El archivo de proyecto, donde se invocan los procedimientos

Page 26: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 26© Jaime Alberto Parra Plaza

; Archivo FILES.INC:

; Constantes

TOTALMASK EQU ”*.*”

;MacrosfDIR MACRO MSK

. . .ENDM

; Declaración de procedimientos disponiblesEXTRN pDIR:NEAR

Page 27: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 27© Jaime Alberto Parra Plaza

; Archivo FILES.ASM:

; Hacer públicos los procedimientos

PUBLIC pDIR

; Código de los procedimientos

pDIR PROC NEAR

. . .

pDIR ENDP

Page 28: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 28© Jaime Alberto Parra Plaza

; Archivo MYPROJ.ASM:

; Incluir el archivo de definiciones

INCLUDE FILES.INC

; Pueden invocarse las macros, . . .

; . . . usar las constantes declaradas . . .

; . . . y acceder a los procedimientos

fDIR TOTALMASK

Page 29: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 29© Jaime Alberto Parra Plaza

Algunos programadores equivocadamente colocan procedimientos dentro de los archivos de inclusión. Aunque esto no genera ningún error y produce archivos correctos, va en contra del propósito original de estos archivos, puesto que el ensamblador debe reensamblar el código de tales procedimientos constantemente. Al ubicarlos aparte de él tal reensamblaje no se requiere.

Page 30: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 30© Jaime Alberto Parra Plaza

• Esto equivale al error de ubicar funciones de C en los archivos cabecera invocados con la sentencia #include “filename.h”

Page 31: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 31© Jaime Alberto Parra Plaza

Es un archivo similar a un módulo (código objeto) que, además, tiene una tabla donde se indica el nombre y la ubicación dentro del archivo de cada uno de los procedimientos que éste contiene.

BIBLIOTECA DEPROCEDIMIENTOS:

Page 32: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 32© Jaime Alberto Parra Plaza

Esa tabla, al ser usada por el enlazador, le permite añadir al archivo ejecutable sólo los procedimientos que se están usando en el proyecto actual.

Ahora se muestra gráficamente la idea planteada:

Page 33: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 33© Jaime Alberto Parra Plaza

LIBRARY.OBJ

proc1

proc2

proc3

manejadorde

bibliotecas

LIBRARY.LIB

proc1=100proc2=350proc3=720

proc1

proc2

proc3

100

350

720

Page 34: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 34© Jaime Alberto Parra Plaza

EXTRN proc2:NEAR

call proc2call ??1

??1 = proc2

MYPROJ.ASM MYPROJ.OBJ

ensamblador

Page 35: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 35© Jaime Alberto Parra Plaza

proc1=100proc2=350proc3=720

proc1100

proc2350

proc3720

call ??1

??1 = proc2

Enlazador

call proc2

Page 36: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 36© Jaime Alberto Parra Plaza

Es común que el fabricante del ensamblador suministre una utilidad adicional para que el programador construya y dé mantenimiento a sus bibliotecas.

MANEJADOR DEBIBLIOTECAS

(LIBRARY MANAGER):

Page 37: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 37© Jaime Alberto Parra Plaza

Las opciones comunes a estas utilidades suelen ser:

+ = añadir módulo a la biblioteca(también usado para crear una biblioteca nueva)

- = borrar módulo de la biblioteca

* = extraer módulo sin borrarlo

-+ = remplazar un módulo existente

-* = extraer módulo y borrarlo

Page 38: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 38© Jaime Alberto Parra Plaza

PREGUNTA 19:

¿Cómo se utiliza el ensamblado condicional y qué opciones tiene?.

Page 39: Pbn - 19 - 1 © Jaime Alberto Parra Plaza CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN.

Pbn - 19 - 39© Jaime Alberto Parra Plaza

< FIN DE LA CLASE 19 >