1 / 39

CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN

CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN. Ya se ha visto que, para ayudar en la estructuración de un programa, están disponibles dos utilidades: procedimientos y macros .

marcus
Télécharger la présentation

CLASE 19 BIBLIOTECAS Y ARCHIVOS DE INCLUSIÓN

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CLASE 19BIBLIOTECAS YARCHIVOS DE INCLUSIÓN

  2. 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:

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

  4. 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.

  5. 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.

  6. No es inteligente reensamblartodoun 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.

  7. El proceso de fraccionarun 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. PROYECTO:

  8. Archivo 1 Módulo 1 Archivo 2 Módulo 2 . . . . . . Archivo n Módulo n Particionado Ensamblaje Enlace Gran Programa Archivo Ejecutable

  9. 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.

  10. 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 proyectoa ensamblar sólo el móduloen el cual se está trabajando actualmente.

  11. Para que esto funcione se requiere solucionar un nuevo problema: ¿Qué debe hacer el ensamblador cuando un procedimiento invoque a otro procedimientoque está en otro archivo?

  12. Proyecto Archivo 1 proc1 proc1 call proc2 call proc2 Archivo k proc2 proc2

  13. Dado que un procedimiento se identifica por su dirección de inicio, el ensamblador en realidad no necesita saberen qué archivo está el procedimiento llamado. Sólo necesita saber queen alguna parteexiste. Es labor del enlazadorubicar su dirección real y remplazarla cuando genere el archivo ejecutable. Dos directivas del ensamblador ayudan a esta labor:

  14. 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. EXTRN Y PUBLIC:

  15. 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 EXTRN:

  16. Las variables o procedimientos que quieran hacerse públicos deben declararse como tales al comienzo del segmentoal cual pertenecen, de la forma:PUBLIC variable PUBLIC procedimiento PUBLIC:

  17. Aplicado al ejemplo anterior, la convención sería: Archivo 1 Archivo k EXTRN proc2:NEAR PUBLIC proc2 proc1 proc2 call proc2

  18. La directiva EXTRN le dice al ensamblador que proc2existe 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.

  19. Labores que hace el Ensamblador: EXTRN proc2:NEAR ??1 = proc2 proc1 call ??1 call proc2 proc2 = 125H:14H PUBLIC proc2 proc2 proc2

  20. ??1 = proc2 call ??1 proc2 = 125H:14H proc2 Labores que hace el Enlazador: call 125H:14H

  21. 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.

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

  23. 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:

  24. La directiva INCLUDE instruye al ensamblador para que incluya o añada el contenido del archivo indicado al archivo actual antesde hacer el ensamblaje del conjunto. Normalmente, los archivos de inclusión se identifican con la extensión .INC.

  25. 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 archivokfuente (código de los procedimientos del fragmento k-ésimo) El archivo de proyecto, donde se invocan los procedimientos

  26. ; Archivo FILES.INC: ; Constantes TOTALMASK EQU ”*.*” ;MacrosfDIR MACRO MSK . . . ENDM ; Declaración de procedimientos disponiblesEXTRN pDIR:NEAR

  27. ; Archivo FILES.ASM: ; Hacer públicos los procedimientos PUBLIC pDIR ; Código de los procedimientos pDIR PROC NEAR . . . pDIR ENDP

  28. ; 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

  29. Algunos programadores equivocadamentecolocan 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.

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

  31. 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:

  32. 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:

  33. LIBRARY.LIB LIBRARY.OBJ manejadordebibliotecas proc1=100proc2=350proc3=720 proc1 proc2 100 proc1 proc3 350 proc2 720 proc3

  34. MYPROJ.ASM MYPROJ.OBJ EXTRN proc2:NEAR ??1 = proc2 call proc2 call ??1 ensamblador

  35. proc1=100proc2=350proc3=720 100 proc1 350 proc2 720 proc3 ??1 = proc2 call ??1 call proc2 Enlazador

  36. 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):

  37. 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

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

  39. < FIN DE LA CLASE 19 >

More Related