File:  [Repository ATC2] / ADD_ver_10 / Source Code / Header Files / tipos.h
Revision 1.2: download - view: text, annotated - select for diffs
Tue Feb 28 15:04:13 2006 UTC (18 years, 8 months ago) by rico
Branches: MAIN
CVS tags: HEAD
*** empty log message ***

/********************************************************************/
/*  tipos.h                                                         */
/*                                                                  */
/*                                                                  */
/*  Copyright (c) 1997-2006 Rafael Rico      (rafael.rico@uah.es)   */
/*                                                                  */
/*  Este fichero forma parte de ADD                                 */
/*  (Analizador de Dependencias de Datos)                           */
/*  Version 5.10.                                                   */
/*                                                                  */
/*                                                                  */
/*  ADD es software libre. Puede redistribuirlo y/o modificarlo     */
/*  bajo los términos de la Licencia Pública General de GNU         */
/*  según es publicada por la Free Software Foundation, bien bajo   */
/*  la versión 2 de dicha Licencia o bien (según su elección)       */
/*  bajo cualquier versión posterior.                               */
/*                                                                  */
/*  ADD se distribuye con la esperanza de que sea útil,             */
/*  pero SIN NINGUNA GARANTÍA, incluso sin la garantía MERCANTIL    */
/*  implícita y sin garantizar la CONVENIENCIA PARA UN PROPÓSITO    */
/*  PARTICULAR. Véase la Licencia Pública General de GNU para       */
/*  más detalles.                                                   */
/*                                                                  */
/*  Debería haber recibido una copia de la Licencia Pública General */
/*  junto con ADD. Si no ha sido así, escriba a la Free Software    */
/*  Foundation, Inc., 51 Franklin St, Fifth Floor,                  */
/*  Boston, MA  02110-1301  EEUU.                                   */
/*                                                                  */
/*  -------------------------- Historia --------------------------- */
/*                                                                  */
/*  $Id: tipos.h,v 1.2 2006/02/28 15:04:13 rico Exp $                                                            */
/*                                                                  */
/*  Revisión 1.2. 01/2006                                           */
/*  Se añade la licencia GPL y documentación en estilo Javadoc      */
/*                                                                  */
/*  Revisión 1.1. 09/2005                                           */
/*  Versión inicial                                                 */
/*                                                                  */
/********************************************************************/

/*****************************************************************************/
/* MÓDULO: tipos.h                                                           */
/*                                                                           */
/* Módulo con definiciones de tipos.                                         */
/*****************************************************************************/
/* Fecha: 15 de septiembre de 2005                                           */
/*****************************************************************************/

/* siempre que "defines.h" haya sido incluido previamente en el mismo módulo */
/* que utiliza éste fichero no hace falta añadir esto: #include "defines.h"  */



/* CONFIGURACIÓN */
/* estructura con los argumentos de configuración */

struct argumentos {
    /* OBSERVACIONES */
    char captura[MAX_LINE];                /* tipo de captura de configuración (OBSERVACIONES) */
    /* FICHERO DE CONFIGURACIÓN POR DEFECTO */
    char ficheroconfig[MAX_LINE];        /* fichero de configuración */
    /* FICHEROS DE BASE DE DATOS */
    char ficheronemos[MAX_LINE];        /* fichero de operaciones */
    char ficheroubis[MAX_LINE];            /* fichero de símbolos */
    char ficherociclos[MAX_LINE];        /* fichero de ciclos */
    /* ORIGEN DE DATOS */
    char origen;                        /* código de origen de datos */
                                        /* 0: TRAZA; 1: SECUENCIA; 2: CADENAHEX */
    char ficherodatos[MAX_LINE];        /* fichero de origen de datos -si existe- */
    char cadenahex[MAX_HEX];            /* instrucción en hexadecimal */
    double rango;                        /* porcentaje a analizar -sólo TRAZA- */
    double comienzo;                    /* comienzo en porcentaje a analizar -sólo TRAZA- */
    unsigned long primera;                /* instrucción de comienzo */
    unsigned long ultima;                /* instrucción de final */
    /* EVALUAR */
    char recuentos;                        /* ¿hacer recuentos? */
    char cpi;                            /* ¿asignar ciclos a cada instrucción? */
    char dependencias;                    /* ¿hacer análisis de dependencias de datos? */
    /* PARÁMETROS DE ANÁLISIS DE DEPENDENCIAS DE DATOS */
    unsigned int ventana;                /* tamaño de la ventana de instrucciones */
    char listaubis[MAX_LISTA];            /* listado de ubicaciones que van a la pizarra */
    char desacoplartipos;                /* ¿desacoplar tipos de dependencias? */
    char verdaderas;                    /* ¿considerar dependencias verdaderas? */
    char antidependencias;                /* ¿considerar antidependencias? */
    char salida;                        /* ¿considerar dependencias de salida? */
    char desacoplarorigen;                /* ¿desacoplar implìcitas-explícitas? */
    char explicitos;                    /* ¿considerar explícitas? */
    char implicitos;                    /* ¿considerar implícitas? */
    char desacoplarfuentes;                /* ¿desacoplar fuentes de dependencias? */
    char datos;                            /* ¿origen de dependencias de datos? */
    char direcciones;                    /* ¿origen de dependencias de direcciones? */
    char pila;                            /* ¿origen de dependencias de pila? */
    char cc;                            /* ¿origen de dependencias de códigos de condición? */
    /* CALCULAR */
    char CPImedio;                        /* ¿calcular CPI medio? */
    char tiempo;                        /* ¿calcular tiempo de ejecución? */
    char ordenparcial;                    /* ¿obtener lista orden parcial? */
    char matrizcaminos;                    /* ¿calcular la matriz de caminos? */
    char pasoscomputacion;                /* ¿calcular pasos de computación? */
    char gradoparalelismo;                /* ¿determinar grado de paralelismo? */
    char acoplamiento;                    /* ¿calcular acoplamiento? */
    char distribucionpasos;                /* ¿construir distribución de pasos de computación para D? */
    /* CONFIGURACIÓN DEL INFORME */
    char volcarBD;                        /* volcar BD a ficheros */
    char crearficheroconfig;            /* volcar configuracion en un fichero nuevo */
    char nuevoficheroconfig[MAX_LINE];    /* nombre del nuevo fichero de configuración */
    char volcarventana[MAX_LISTA];        /* listado de ventanas a volcar en ficheros EXCEL */
    char ficheroresultados[MAX_LINE];    /* fichero de resultados */
    char nivelnotificaciones;            /* nivel de gravedad de los mensajes registrados en el */
                                        /* fichero de log de sucesos: 0(ALL), 1(EX_CFG), 2(ERRORS) */
    /* GUI */
    char verinstruccion;                /* muestra información de la instrucción en pantalla */
    char verventana;                    /* muestra información de la ventana en pantalla */
};



/* BASES DE DATOS */
/* defino tipo para los registros de las operaciones */

typedef struct {
    char nemonico[MAX_NEMO];         /* nemónico */
    char tipo;                       /* tipo de operación */
    char modo_op1;                   /* leída, escrita o leída y escrita */
    char modo_op2;                   /* leído, escrito o leído y escrito */
    char implicitos_escritos[MAX_LISTA];    /* implícitos escritos */
    char implicitos_leidos[MAX_LISTA];      /* implícitos leídos */
}operacion;


/* defino tipo para los registros de los operandos */

typedef struct {
    char simbolo[MAX_UBI];           /* símbolos de datos */
    char tipo;                       /* tipo de ubicación */
    char dependencias[MAX_DEPEN];    /* dependencias con otros símbolos */
    char segmento;                   /* segmento por defecto */
}operando;


/* defino tipo para los registros de los tiempos */

typedef struct {
    char identificador[MAX_NEMO];    /* identificador de operación, operando, etc. */
    char ciclos;                     /* tiempo en ciclos */
}tiempo;



/* DESENSAMBLADO */
/* estructura de desensamblado */

struct desensamblado{
    char nemonico[MAX_NEMO];         /* nemónico de la instrucción */
    char op1[MAX_OPE];               /* operando 1 (destino) */
    char op2[MAX_OPE];               /* operando 2 (fuente) */
    char longitud;                   /* longitud del formato */
};


/* defino tipo para salvar el análisis completo de los operandos */
/* aunque se usa una vez es posible que en el futuro se deba */
/* construir un array para hacer un análisis más fino en 2 pasadas */

typedef struct {
    char nemonico[MAX_NEMO];         /* nemónico de la instrucción */
    char op1[MAX_OPE];               /* operando 1 (destino) */
    char op2[MAX_OPE];               /* operando 2 (fuente) */
    char hexadecimal[MAX_HEX];       /* cadena hexadecimal */
    char longitud;                   /* longitud de la instrucción en bytes */

    char prefijo[MAX_NEMO];          /* prefijo -si lo hay- */
    char salto;                      /* 0 incond; 1 no salto; 2 salta; 3 no salta */

    unsigned short int ciclosALU;    /* ciclos de operación */
    unsigned short int ciclosBIU;    /* ciclos debidos a los operandos */

    char leidoimpldatos[MAX_LISTA];         /* datos leídos implícitamente */
    char leidoimpldir[MAX_LISTA];           /* leídos implícitamente direccionar */
    char leidoimplpila[MAX_LISTA];          /* leídos implícitamente acceso a pila */
    char leidoimplestado[MAX_LISTA];        /* cód. condición leídos implícitamente */

    char leidoexpldatos[MAX_LISTA];         /* datos leídos explícitamente */
    char leidoexpldir[MAX_LISTA];           /* leídos explícitamente direccionar */
    char leidoexplpila[MAX_LISTA];          /* leídos explícitamente acceso a pila */
    char leidoexplestado[MAX_LISTA];        /* cc. leídos explícitamente */

    char escritoimpldatos[MAX_LISTA];       /* datos escritos implícitamente */
    char escritoimpldir[MAX_LISTA];         /* escritos implícitamente direccionar */
    char escritoimplpila[MAX_LISTA];        /* escritos implícitamente acceso a pila */
    char escritoimplestado[MAX_LISTA];      /* cc. escritos implícitamente */

    char escritoexpldatos[MAX_LISTA];       /* datos escritos explícitamente */
    char escritoexpldir[MAX_LISTA];         /* escritos explícitamente direccionar */
    char escritoexplpila[MAX_LISTA];        /* escritos explícitamente acceso a pila */
    char escritoexplestado[MAX_LISTA];      /* cc. escritos explícitamente */
}fichainstruccion;



/* ANÁLISIS DE DEPENDENCIAS */
/* defino tipo para los identificadores de ubicaciones de datos */

typedef struct {
    char nombre[MAX_UBI];            /* identificador de ubicación */
}ubicacion;


/* estructura con los punteros de las matrices de dependencias */

struct punterosD{
    unsigned char **Ddatoexp;        /* matriz de dependencias de datos explícitos */ 
    unsigned char **Ddir_exp;        /* matriz de dependencias de direcciones explícitas */
    unsigned char **Dpilaexp;        /* matriz de dependencias de pila explícitas */ 
    unsigned char **Destadoexp;        /* matriz de dependencias de estado explícitas */
    unsigned char **Ddatoimp;        /* matriz de dependencias de datos implícitos */ 
    unsigned char **Ddir_imp;        /* matriz de dependencias de direcciones implícitas */
    unsigned char **Dpilaimp;        /* matriz de dependencias de pila implícitas */ 
    unsigned char **Destadoimp;        /* matriz de dependencias de estado implícitas */

    unsigned char **ADdatoexp;        /* matriz de antidependencias de datos explícitos */ 
    unsigned char **ADdir_exp;        /* matriz de antidependencias de direcciones explícitas */
    unsigned char **ADpilaexp;        /* matriz de antidependencias de pila explícitas */ 
    unsigned char **ADestadoexp;    /* matriz de antidependencias de estado explícitas */
    unsigned char **ADdatoimp;        /* matriz de antidependencias de datos implícitos */ 
    unsigned char **ADdir_imp;        /* matriz de antidependencias de direcciones implícitas */
    unsigned char **ADpilaimp;        /* matriz de antidependencias de pila implícitas */ 
    unsigned char **ADestadoimp;    /* matriz de antidependencias de estado implícitas */

    unsigned char **Sdatoexp;        /* matriz de dependencias de salida de datos explícitos */ 
    unsigned char **Sdir_exp;        /* matriz de dependencias de salida de direcciones explícitas */
    unsigned char **Spilaexp;        /* matriz de dependencias de salida de pila explícitas */ 
    unsigned char **Sestadoexp;        /* matriz de dependencias de salida de estado explícitas */
    unsigned char **Sdatoimp;        /* matriz de dependencias de salida de datos implícitos */ 
    unsigned char **Sdir_imp;        /* matriz de dependencias de salida de direcciones implícitas */
    unsigned char **Spilaimp;        /* matriz de dependencias de salida de pila implícitas */ 
    unsigned char **Sestadoimp;        /* matriz de dependencias de salida de estado implícitas */

    unsigned char **D;                /* matriz composición de todas las dependencias */
};


/* defino tipo para salvar parámetros relativos a las matrices de dependencias */

typedef struct {
    double Ddatoexp;        /* parámetro asociado a matriz de dependencias de datos explícitos */ 
    double Ddir_exp;        /* parámetro asociado a matriz de dependencias de direcciones explícitas */
    double Dpilaexp;        /* parámetro asociado a matriz de dependencias de pila explícitas */ 
    double Destadoexp;        /* parámetro asociado a matriz de dependencias de estado explícitas */
    double Ddatoimp;        /* parámetro asociado a matriz de dependencias de datos implícitos */ 
    double Ddir_imp;        /* parámetro asociado a matriz de dependencias de direcciones implícitas */
    double Dpilaimp;        /* parámetro asociado a matriz de dependencias de pila implícitas */ 
    double Destadoimp;        /* parámetro asociado a matriz de dependencias de estado implícitas */

    double ADdatoexp;        /* parámetro asociado a matriz de antidependencias de datos explícitos */ 
    double ADdir_exp;        /* parámetro asociado a matriz de antidependencias de direcciones explícitas */
    double ADpilaexp;        /* parámetro asociado a matriz de antidependencias de pila explícitas */ 
    double ADestadoexp;        /* parámetro asociado a matriz de antidependencias de estado explícitas */
    double ADdatoimp;        /* parámetro asociado a matriz de antidependencias de datos implícitos */ 
    double ADdir_imp;        /* parámetro asociado a matriz de antidependencias de direcciones implícitas */
    double ADpilaimp;        /* parámetro asociado a matriz de antidependencias de pila implícitas */ 
    double ADestadoimp;        /* parámetro asociado a matriz de antidependencias de estado implícitas */

    double Sdatoexp;        /* parámetro asociado a matriz de dependencias de salida de datos explícitos */ 
    double Sdir_exp;        /* parámetro asociado a matriz de dependencias de salida de direcciones explícitas */
    double Spilaexp;        /* parámetro asociado a matriz de dependencias de salida de pila explícitas */ 
    double Sestadoexp;        /* parámetro asociado a matriz de dependencias de salida de estado explícitas */
    double Sdatoimp;        /* parámetro asociado a matriz de dependencias de salida de datos implícitos */ 
    double Sdir_imp;        /* parámetro asociado a matriz de dependencias de salida de direcciones implícitas */
    double Spilaimp;        /* parámetro asociado a matriz de dependencias de salida de pila implícitas */ 
    double Sestadoimp;        /* parámetro asociado a matriz de dependencias de salida de estado implícitas */

    double D;                /* parámetro asociado a matriz composición de todas las dependencias */
}parametromatriz;



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