Annotation of ADD_ver_10/Source Code/Header Files/tipos.h, revision 1.2

1.2     ! rico        1: /********************************************************************/
        !             2: /*  tipos.h                                                         */
        !             3: /*                                                                  */
        !             4: /*                                                                  */
        !             5: /*  Copyright (c) 1997-2006 Rafael Rico      (rafael.rico@uah.es)   */
        !             6: /*                                                                  */
        !             7: /*  Este fichero forma parte de ADD                                 */
        !             8: /*  (Analizador de Dependencias de Datos)                           */
        !             9: /*  Version 5.10.                                                   */
        !            10: /*                                                                  */
        !            11: /*                                                                  */
        !            12: /*  ADD es software libre. Puede redistribuirlo y/o modificarlo     */
        !            13: /*  bajo los términos de la Licencia Pública General de GNU         */
        !            14: /*  según es publicada por la Free Software Foundation, bien bajo   */
        !            15: /*  la versión 2 de dicha Licencia o bien (según su elección)       */
        !            16: /*  bajo cualquier versión posterior.                               */
        !            17: /*                                                                  */
        !            18: /*  ADD se distribuye con la esperanza de que sea útil,             */
        !            19: /*  pero SIN NINGUNA GARANTÍA, incluso sin la garantía MERCANTIL    */
        !            20: /*  implícita y sin garantizar la CONVENIENCIA PARA UN PROPÓSITO    */
        !            21: /*  PARTICULAR. Véase la Licencia Pública General de GNU para       */
        !            22: /*  más detalles.                                                   */
        !            23: /*                                                                  */
        !            24: /*  Debería haber recibido una copia de la Licencia Pública General */
        !            25: /*  junto con ADD. Si no ha sido así, escriba a la Free Software    */
        !            26: /*  Foundation, Inc., 51 Franklin St, Fifth Floor,                  */
        !            27: /*  Boston, MA  02110-1301  EEUU.                                   */
        !            28: /*                                                                  */
        !            29: /*  -------------------------- Historia --------------------------- */
        !            30: /*                                                                  */
        !            31: /*  $Id$                                                            */
        !            32: /*                                                                  */
        !            33: /*  Revisión 1.2. 01/2006                                           */
        !            34: /*  Se añade la licencia GPL y documentación en estilo Javadoc      */
        !            35: /*                                                                  */
        !            36: /*  Revisión 1.1. 09/2005                                           */
        !            37: /*  Versión inicial                                                 */
        !            38: /*                                                                  */
        !            39: /********************************************************************/
        !            40: 
1.1       rico       41: /*****************************************************************************/
                     42: /* MÓDULO: tipos.h                                                           */
                     43: /*                                                                           */
                     44: /* Módulo con definiciones de tipos.                                         */
                     45: /*****************************************************************************/
                     46: /* Fecha: 15 de septiembre de 2005                                           */
                     47: /*****************************************************************************/
                     48: 
                     49: /* siempre que "defines.h" haya sido incluido previamente en el mismo módulo */
                     50: /* que utiliza éste fichero no hace falta añadir esto: #include "defines.h"  */
                     51: 
                     52: 
                     53: 
                     54: /* CONFIGURACIÓN */
                     55: /* estructura con los argumentos de configuración */
                     56: 
                     57: struct argumentos {
                     58:     /* OBSERVACIONES */
                     59:     char captura[MAX_LINE];                /* tipo de captura de configuración (OBSERVACIONES) */
                     60:     /* FICHERO DE CONFIGURACIÓN POR DEFECTO */
                     61:     char ficheroconfig[MAX_LINE];        /* fichero de configuración */
                     62:     /* FICHEROS DE BASE DE DATOS */
                     63:     char ficheronemos[MAX_LINE];        /* fichero de operaciones */
                     64:     char ficheroubis[MAX_LINE];            /* fichero de símbolos */
                     65:     char ficherociclos[MAX_LINE];        /* fichero de ciclos */
                     66:     /* ORIGEN DE DATOS */
                     67:     char origen;                        /* código de origen de datos */
                     68:                                         /* 0: TRAZA; 1: SECUENCIA; 2: CADENAHEX */
                     69:     char ficherodatos[MAX_LINE];        /* fichero de origen de datos -si existe- */
                     70:     char cadenahex[MAX_HEX];            /* instrucción en hexadecimal */
                     71:     double rango;                        /* porcentaje a analizar -sólo TRAZA- */
                     72:     double comienzo;                    /* comienzo en porcentaje a analizar -sólo TRAZA- */
                     73:     unsigned long primera;                /* instrucción de comienzo */
                     74:     unsigned long ultima;                /* instrucción de final */
                     75:     /* EVALUAR */
                     76:     char recuentos;                        /* ¿hacer recuentos? */
                     77:     char cpi;                            /* ¿asignar ciclos a cada instrucción? */
                     78:     char dependencias;                    /* ¿hacer análisis de dependencias de datos? */
                     79:     /* PARÁMETROS DE ANÁLISIS DE DEPENDENCIAS DE DATOS */
                     80:     unsigned int ventana;                /* tamaño de la ventana de instrucciones */
                     81:     char listaubis[MAX_LISTA];            /* listado de ubicaciones que van a la pizarra */
                     82:     char desacoplartipos;                /* ¿desacoplar tipos de dependencias? */
                     83:     char verdaderas;                    /* ¿considerar dependencias verdaderas? */
                     84:     char antidependencias;                /* ¿considerar antidependencias? */
                     85:     char salida;                        /* ¿considerar dependencias de salida? */
                     86:     char desacoplarorigen;                /* ¿desacoplar implìcitas-explícitas? */
                     87:     char explicitos;                    /* ¿considerar explícitas? */
                     88:     char implicitos;                    /* ¿considerar implícitas? */
                     89:     char desacoplarfuentes;                /* ¿desacoplar fuentes de dependencias? */
                     90:     char datos;                            /* ¿origen de dependencias de datos? */
                     91:     char direcciones;                    /* ¿origen de dependencias de direcciones? */
                     92:     char pila;                            /* ¿origen de dependencias de pila? */
                     93:     char cc;                            /* ¿origen de dependencias de códigos de condición? */
                     94:     /* CALCULAR */
                     95:     char CPImedio;                        /* ¿calcular CPI medio? */
                     96:     char tiempo;                        /* ¿calcular tiempo de ejecución? */
                     97:     char ordenparcial;                    /* ¿obtener lista orden parcial? */
                     98:     char matrizcaminos;                    /* ¿calcular la matriz de caminos? */
                     99:     char pasoscomputacion;                /* ¿calcular pasos de computación? */
                    100:     char gradoparalelismo;                /* ¿determinar grado de paralelismo? */
                    101:     char acoplamiento;                    /* ¿calcular acoplamiento? */
                    102:     char distribucionpasos;                /* ¿construir distribución de pasos de computación para D? */
                    103:     /* CONFIGURACIÓN DEL INFORME */
                    104:     char volcarBD;                        /* volcar BD a ficheros */
                    105:     char crearficheroconfig;            /* volcar configuracion en un fichero nuevo */
                    106:     char nuevoficheroconfig[MAX_LINE];    /* nombre del nuevo fichero de configuración */
                    107:     char volcarventana[MAX_LISTA];        /* listado de ventanas a volcar en ficheros EXCEL */
                    108:     char ficheroresultados[MAX_LINE];    /* fichero de resultados */
                    109:     char nivelnotificaciones;            /* nivel de gravedad de los mensajes registrados en el */
                    110:                                         /* fichero de log de sucesos: 0(ALL), 1(EX_CFG), 2(ERRORS) */
                    111:     /* GUI */
                    112:     char verinstruccion;                /* muestra información de la instrucción en pantalla */
                    113:     char verventana;                    /* muestra información de la ventana en pantalla */
                    114: };
                    115: 
                    116: 
                    117: 
                    118: /* BASES DE DATOS */
                    119: /* defino tipo para los registros de las operaciones */
                    120: 
                    121: typedef struct {
                    122:     char nemonico[MAX_NEMO];         /* nemónico */
                    123:     char tipo;                       /* tipo de operación */
                    124:     char modo_op1;                   /* leída, escrita o leída y escrita */
                    125:     char modo_op2;                   /* leído, escrito o leído y escrito */
                    126:     char implicitos_escritos[MAX_LISTA];    /* implícitos escritos */
                    127:     char implicitos_leidos[MAX_LISTA];      /* implícitos leídos */
                    128: }operacion;
                    129: 
                    130: 
                    131: /* defino tipo para los registros de los operandos */
                    132: 
                    133: typedef struct {
                    134:     char simbolo[MAX_UBI];           /* símbolos de datos */
                    135:     char tipo;                       /* tipo de ubicación */
                    136:     char dependencias[MAX_DEPEN];    /* dependencias con otros símbolos */
                    137:     char segmento;                   /* segmento por defecto */
                    138: }operando;
                    139: 
                    140: 
                    141: /* defino tipo para los registros de los tiempos */
                    142: 
                    143: typedef struct {
                    144:     char identificador[MAX_NEMO];    /* identificador de operación, operando, etc. */
                    145:     char ciclos;                     /* tiempo en ciclos */
                    146: }tiempo;
                    147: 
                    148: 
                    149: 
                    150: /* DESENSAMBLADO */
                    151: /* estructura de desensamblado */
                    152: 
                    153: struct desensamblado{
                    154:     char nemonico[MAX_NEMO];         /* nemónico de la instrucción */
                    155:     char op1[MAX_OPE];               /* operando 1 (destino) */
                    156:     char op2[MAX_OPE];               /* operando 2 (fuente) */
                    157:     char longitud;                   /* longitud del formato */
                    158: };
                    159: 
                    160: 
                    161: /* defino tipo para salvar el análisis completo de los operandos */
                    162: /* aunque se usa una vez es posible que en el futuro se deba */
                    163: /* construir un array para hacer un análisis más fino en 2 pasadas */
                    164: 
                    165: typedef struct {
                    166:     char nemonico[MAX_NEMO];         /* nemónico de la instrucción */
                    167:     char op1[MAX_OPE];               /* operando 1 (destino) */
                    168:     char op2[MAX_OPE];               /* operando 2 (fuente) */
                    169:     char hexadecimal[MAX_HEX];       /* cadena hexadecimal */
                    170:     char longitud;                   /* longitud de la instrucción en bytes */
                    171: 
                    172:     char prefijo[MAX_NEMO];          /* prefijo -si lo hay- */
                    173:     char salto;                      /* 0 incond; 1 no salto; 2 salta; 3 no salta */
                    174: 
                    175:     unsigned short int ciclosALU;    /* ciclos de operación */
                    176:     unsigned short int ciclosBIU;    /* ciclos debidos a los operandos */
                    177: 
                    178:     char leidoimpldatos[MAX_LISTA];         /* datos leídos implícitamente */
                    179:     char leidoimpldir[MAX_LISTA];           /* leídos implícitamente direccionar */
                    180:     char leidoimplpila[MAX_LISTA];          /* leídos implícitamente acceso a pila */
                    181:     char leidoimplestado[MAX_LISTA];        /* cód. condición leídos implícitamente */
                    182: 
                    183:     char leidoexpldatos[MAX_LISTA];         /* datos leídos explícitamente */
                    184:     char leidoexpldir[MAX_LISTA];           /* leídos explícitamente direccionar */
                    185:     char leidoexplpila[MAX_LISTA];          /* leídos explícitamente acceso a pila */
                    186:     char leidoexplestado[MAX_LISTA];        /* cc. leídos explícitamente */
                    187: 
                    188:     char escritoimpldatos[MAX_LISTA];       /* datos escritos implícitamente */
                    189:     char escritoimpldir[MAX_LISTA];         /* escritos implícitamente direccionar */
                    190:     char escritoimplpila[MAX_LISTA];        /* escritos implícitamente acceso a pila */
                    191:     char escritoimplestado[MAX_LISTA];      /* cc. escritos implícitamente */
                    192: 
                    193:     char escritoexpldatos[MAX_LISTA];       /* datos escritos explícitamente */
                    194:     char escritoexpldir[MAX_LISTA];         /* escritos explícitamente direccionar */
                    195:     char escritoexplpila[MAX_LISTA];        /* escritos explícitamente acceso a pila */
                    196:     char escritoexplestado[MAX_LISTA];      /* cc. escritos explícitamente */
                    197: }fichainstruccion;
                    198: 
                    199: 
                    200: 
                    201: /* ANÁLISIS DE DEPENDENCIAS */
                    202: /* defino tipo para los identificadores de ubicaciones de datos */
                    203: 
                    204: typedef struct {
                    205:     char nombre[MAX_UBI];            /* identificador de ubicación */
                    206: }ubicacion;
                    207: 
                    208: 
                    209: /* estructura con los punteros de las matrices de dependencias */
                    210: 
                    211: struct punterosD{
                    212:     unsigned char **Ddatoexp;        /* matriz de dependencias de datos explícitos */ 
                    213:     unsigned char **Ddir_exp;        /* matriz de dependencias de direcciones explícitas */
                    214:     unsigned char **Dpilaexp;        /* matriz de dependencias de pila explícitas */ 
                    215:     unsigned char **Destadoexp;        /* matriz de dependencias de estado explícitas */
                    216:     unsigned char **Ddatoimp;        /* matriz de dependencias de datos implícitos */ 
                    217:     unsigned char **Ddir_imp;        /* matriz de dependencias de direcciones implícitas */
                    218:     unsigned char **Dpilaimp;        /* matriz de dependencias de pila implícitas */ 
                    219:     unsigned char **Destadoimp;        /* matriz de dependencias de estado implícitas */
                    220: 
                    221:     unsigned char **ADdatoexp;        /* matriz de antidependencias de datos explícitos */ 
                    222:     unsigned char **ADdir_exp;        /* matriz de antidependencias de direcciones explícitas */
                    223:     unsigned char **ADpilaexp;        /* matriz de antidependencias de pila explícitas */ 
                    224:     unsigned char **ADestadoexp;    /* matriz de antidependencias de estado explícitas */
                    225:     unsigned char **ADdatoimp;        /* matriz de antidependencias de datos implícitos */ 
                    226:     unsigned char **ADdir_imp;        /* matriz de antidependencias de direcciones implícitas */
                    227:     unsigned char **ADpilaimp;        /* matriz de antidependencias de pila implícitas */ 
                    228:     unsigned char **ADestadoimp;    /* matriz de antidependencias de estado implícitas */
                    229: 
                    230:     unsigned char **Sdatoexp;        /* matriz de dependencias de salida de datos explícitos */ 
                    231:     unsigned char **Sdir_exp;        /* matriz de dependencias de salida de direcciones explícitas */
                    232:     unsigned char **Spilaexp;        /* matriz de dependencias de salida de pila explícitas */ 
                    233:     unsigned char **Sestadoexp;        /* matriz de dependencias de salida de estado explícitas */
                    234:     unsigned char **Sdatoimp;        /* matriz de dependencias de salida de datos implícitos */ 
                    235:     unsigned char **Sdir_imp;        /* matriz de dependencias de salida de direcciones implícitas */
                    236:     unsigned char **Spilaimp;        /* matriz de dependencias de salida de pila implícitas */ 
                    237:     unsigned char **Sestadoimp;        /* matriz de dependencias de salida de estado implícitas */
                    238: 
                    239:     unsigned char **D;                /* matriz composición de todas las dependencias */
                    240: };
                    241: 
                    242: 
                    243: /* defino tipo para salvar parámetros relativos a las matrices de dependencias */
                    244: 
                    245: typedef struct {
                    246:     double Ddatoexp;        /* parámetro asociado a matriz de dependencias de datos explícitos */ 
                    247:     double Ddir_exp;        /* parámetro asociado a matriz de dependencias de direcciones explícitas */
                    248:     double Dpilaexp;        /* parámetro asociado a matriz de dependencias de pila explícitas */ 
                    249:     double Destadoexp;        /* parámetro asociado a matriz de dependencias de estado explícitas */
                    250:     double Ddatoimp;        /* parámetro asociado a matriz de dependencias de datos implícitos */ 
                    251:     double Ddir_imp;        /* parámetro asociado a matriz de dependencias de direcciones implícitas */
                    252:     double Dpilaimp;        /* parámetro asociado a matriz de dependencias de pila implícitas */ 
                    253:     double Destadoimp;        /* parámetro asociado a matriz de dependencias de estado implícitas */
                    254: 
                    255:     double ADdatoexp;        /* parámetro asociado a matriz de antidependencias de datos explícitos */ 
                    256:     double ADdir_exp;        /* parámetro asociado a matriz de antidependencias de direcciones explícitas */
                    257:     double ADpilaexp;        /* parámetro asociado a matriz de antidependencias de pila explícitas */ 
                    258:     double ADestadoexp;        /* parámetro asociado a matriz de antidependencias de estado explícitas */
                    259:     double ADdatoimp;        /* parámetro asociado a matriz de antidependencias de datos implícitos */ 
                    260:     double ADdir_imp;        /* parámetro asociado a matriz de antidependencias de direcciones implícitas */
                    261:     double ADpilaimp;        /* parámetro asociado a matriz de antidependencias de pila implícitas */ 
                    262:     double ADestadoimp;        /* parámetro asociado a matriz de antidependencias de estado implícitas */
                    263: 
                    264:     double Sdatoexp;        /* parámetro asociado a matriz de dependencias de salida de datos explícitos */ 
                    265:     double Sdir_exp;        /* parámetro asociado a matriz de dependencias de salida de direcciones explícitas */
                    266:     double Spilaexp;        /* parámetro asociado a matriz de dependencias de salida de pila explícitas */ 
                    267:     double Sestadoexp;        /* parámetro asociado a matriz de dependencias de salida de estado explícitas */
                    268:     double Sdatoimp;        /* parámetro asociado a matriz de dependencias de salida de datos implícitos */ 
                    269:     double Sdir_imp;        /* parámetro asociado a matriz de dependencias de salida de direcciones implícitas */
                    270:     double Spilaimp;        /* parámetro asociado a matriz de dependencias de salida de pila implícitas */ 
                    271:     double Sestadoimp;        /* parámetro asociado a matriz de dependencias de salida de estado implícitas */
                    272: 
                    273:     double D;                /* parámetro asociado a matriz composición de todas las dependencias */
                    274: }parametromatriz;
                    275: 
                    276: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>