/********************************************************************/
/* 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>