Annotation of ADD_ver_10/Source Code/Header Files/tipos.h, revision 1.1
1.1 ! rico 1: /*****************************************************************************/
! 2: /* MÓDULO: tipos.h */
! 3: /* */
! 4: /* Módulo con definiciones de tipos. */
! 5: /*****************************************************************************/
! 6: /* Fecha: 15 de septiembre de 2005 */
! 7: /*****************************************************************************/
! 8:
! 9: /* siempre que "defines.h" haya sido incluido previamente en el mismo módulo */
! 10: /* que utiliza éste fichero no hace falta añadir esto: #include "defines.h" */
! 11:
! 12:
! 13:
! 14: /* CONFIGURACIÓN */
! 15: /* estructura con los argumentos de configuración */
! 16:
! 17: struct argumentos {
! 18: /* OBSERVACIONES */
! 19: char captura[MAX_LINE]; /* tipo de captura de configuración (OBSERVACIONES) */
! 20: /* FICHERO DE CONFIGURACIÓN POR DEFECTO */
! 21: char ficheroconfig[MAX_LINE]; /* fichero de configuración */
! 22: /* FICHEROS DE BASE DE DATOS */
! 23: char ficheronemos[MAX_LINE]; /* fichero de operaciones */
! 24: char ficheroubis[MAX_LINE]; /* fichero de símbolos */
! 25: char ficherociclos[MAX_LINE]; /* fichero de ciclos */
! 26: /* ORIGEN DE DATOS */
! 27: char origen; /* código de origen de datos */
! 28: /* 0: TRAZA; 1: SECUENCIA; 2: CADENAHEX */
! 29: char ficherodatos[MAX_LINE]; /* fichero de origen de datos -si existe- */
! 30: char cadenahex[MAX_HEX]; /* instrucción en hexadecimal */
! 31: double rango; /* porcentaje a analizar -sólo TRAZA- */
! 32: double comienzo; /* comienzo en porcentaje a analizar -sólo TRAZA- */
! 33: unsigned long primera; /* instrucción de comienzo */
! 34: unsigned long ultima; /* instrucción de final */
! 35: /* EVALUAR */
! 36: char recuentos; /* ¿hacer recuentos? */
! 37: char cpi; /* ¿asignar ciclos a cada instrucción? */
! 38: char dependencias; /* ¿hacer análisis de dependencias de datos? */
! 39: /* PARÁMETROS DE ANÁLISIS DE DEPENDENCIAS DE DATOS */
! 40: unsigned int ventana; /* tamaño de la ventana de instrucciones */
! 41: char listaubis[MAX_LISTA]; /* listado de ubicaciones que van a la pizarra */
! 42: char desacoplartipos; /* ¿desacoplar tipos de dependencias? */
! 43: char verdaderas; /* ¿considerar dependencias verdaderas? */
! 44: char antidependencias; /* ¿considerar antidependencias? */
! 45: char salida; /* ¿considerar dependencias de salida? */
! 46: char desacoplarorigen; /* ¿desacoplar implìcitas-explícitas? */
! 47: char explicitos; /* ¿considerar explícitas? */
! 48: char implicitos; /* ¿considerar implícitas? */
! 49: char desacoplarfuentes; /* ¿desacoplar fuentes de dependencias? */
! 50: char datos; /* ¿origen de dependencias de datos? */
! 51: char direcciones; /* ¿origen de dependencias de direcciones? */
! 52: char pila; /* ¿origen de dependencias de pila? */
! 53: char cc; /* ¿origen de dependencias de códigos de condición? */
! 54: /* CALCULAR */
! 55: char CPImedio; /* ¿calcular CPI medio? */
! 56: char tiempo; /* ¿calcular tiempo de ejecución? */
! 57: char ordenparcial; /* ¿obtener lista orden parcial? */
! 58: char matrizcaminos; /* ¿calcular la matriz de caminos? */
! 59: char pasoscomputacion; /* ¿calcular pasos de computación? */
! 60: char gradoparalelismo; /* ¿determinar grado de paralelismo? */
! 61: char acoplamiento; /* ¿calcular acoplamiento? */
! 62: char distribucionpasos; /* ¿construir distribución de pasos de computación para D? */
! 63: /* CONFIGURACIÓN DEL INFORME */
! 64: char volcarBD; /* volcar BD a ficheros */
! 65: char crearficheroconfig; /* volcar configuracion en un fichero nuevo */
! 66: char nuevoficheroconfig[MAX_LINE]; /* nombre del nuevo fichero de configuración */
! 67: char volcarventana[MAX_LISTA]; /* listado de ventanas a volcar en ficheros EXCEL */
! 68: char ficheroresultados[MAX_LINE]; /* fichero de resultados */
! 69: char nivelnotificaciones; /* nivel de gravedad de los mensajes registrados en el */
! 70: /* fichero de log de sucesos: 0(ALL), 1(EX_CFG), 2(ERRORS) */
! 71: /* GUI */
! 72: char verinstruccion; /* muestra información de la instrucción en pantalla */
! 73: char verventana; /* muestra información de la ventana en pantalla */
! 74: };
! 75:
! 76:
! 77:
! 78: /* BASES DE DATOS */
! 79: /* defino tipo para los registros de las operaciones */
! 80:
! 81: typedef struct {
! 82: char nemonico[MAX_NEMO]; /* nemónico */
! 83: char tipo; /* tipo de operación */
! 84: char modo_op1; /* leída, escrita o leída y escrita */
! 85: char modo_op2; /* leído, escrito o leído y escrito */
! 86: char implicitos_escritos[MAX_LISTA]; /* implícitos escritos */
! 87: char implicitos_leidos[MAX_LISTA]; /* implícitos leídos */
! 88: }operacion;
! 89:
! 90:
! 91: /* defino tipo para los registros de los operandos */
! 92:
! 93: typedef struct {
! 94: char simbolo[MAX_UBI]; /* símbolos de datos */
! 95: char tipo; /* tipo de ubicación */
! 96: char dependencias[MAX_DEPEN]; /* dependencias con otros símbolos */
! 97: char segmento; /* segmento por defecto */
! 98: }operando;
! 99:
! 100:
! 101: /* defino tipo para los registros de los tiempos */
! 102:
! 103: typedef struct {
! 104: char identificador[MAX_NEMO]; /* identificador de operación, operando, etc. */
! 105: char ciclos; /* tiempo en ciclos */
! 106: }tiempo;
! 107:
! 108:
! 109:
! 110: /* DESENSAMBLADO */
! 111: /* estructura de desensamblado */
! 112:
! 113: struct desensamblado{
! 114: char nemonico[MAX_NEMO]; /* nemónico de la instrucción */
! 115: char op1[MAX_OPE]; /* operando 1 (destino) */
! 116: char op2[MAX_OPE]; /* operando 2 (fuente) */
! 117: char longitud; /* longitud del formato */
! 118: };
! 119:
! 120:
! 121: /* defino tipo para salvar el análisis completo de los operandos */
! 122: /* aunque se usa una vez es posible que en el futuro se deba */
! 123: /* construir un array para hacer un análisis más fino en 2 pasadas */
! 124:
! 125: typedef struct {
! 126: char nemonico[MAX_NEMO]; /* nemónico de la instrucción */
! 127: char op1[MAX_OPE]; /* operando 1 (destino) */
! 128: char op2[MAX_OPE]; /* operando 2 (fuente) */
! 129: char hexadecimal[MAX_HEX]; /* cadena hexadecimal */
! 130: char longitud; /* longitud de la instrucción en bytes */
! 131:
! 132: char prefijo[MAX_NEMO]; /* prefijo -si lo hay- */
! 133: char salto; /* 0 incond; 1 no salto; 2 salta; 3 no salta */
! 134:
! 135: unsigned short int ciclosALU; /* ciclos de operación */
! 136: unsigned short int ciclosBIU; /* ciclos debidos a los operandos */
! 137:
! 138: char leidoimpldatos[MAX_LISTA]; /* datos leídos implícitamente */
! 139: char leidoimpldir[MAX_LISTA]; /* leídos implícitamente direccionar */
! 140: char leidoimplpila[MAX_LISTA]; /* leídos implícitamente acceso a pila */
! 141: char leidoimplestado[MAX_LISTA]; /* cód. condición leídos implícitamente */
! 142:
! 143: char leidoexpldatos[MAX_LISTA]; /* datos leídos explícitamente */
! 144: char leidoexpldir[MAX_LISTA]; /* leídos explícitamente direccionar */
! 145: char leidoexplpila[MAX_LISTA]; /* leídos explícitamente acceso a pila */
! 146: char leidoexplestado[MAX_LISTA]; /* cc. leídos explícitamente */
! 147:
! 148: char escritoimpldatos[MAX_LISTA]; /* datos escritos implícitamente */
! 149: char escritoimpldir[MAX_LISTA]; /* escritos implícitamente direccionar */
! 150: char escritoimplpila[MAX_LISTA]; /* escritos implícitamente acceso a pila */
! 151: char escritoimplestado[MAX_LISTA]; /* cc. escritos implícitamente */
! 152:
! 153: char escritoexpldatos[MAX_LISTA]; /* datos escritos explícitamente */
! 154: char escritoexpldir[MAX_LISTA]; /* escritos explícitamente direccionar */
! 155: char escritoexplpila[MAX_LISTA]; /* escritos explícitamente acceso a pila */
! 156: char escritoexplestado[MAX_LISTA]; /* cc. escritos explícitamente */
! 157: }fichainstruccion;
! 158:
! 159:
! 160:
! 161: /* ANÁLISIS DE DEPENDENCIAS */
! 162: /* defino tipo para los identificadores de ubicaciones de datos */
! 163:
! 164: typedef struct {
! 165: char nombre[MAX_UBI]; /* identificador de ubicación */
! 166: }ubicacion;
! 167:
! 168:
! 169: /* estructura con los punteros de las matrices de dependencias */
! 170:
! 171: struct punterosD{
! 172: unsigned char **Ddatoexp; /* matriz de dependencias de datos explícitos */
! 173: unsigned char **Ddir_exp; /* matriz de dependencias de direcciones explícitas */
! 174: unsigned char **Dpilaexp; /* matriz de dependencias de pila explícitas */
! 175: unsigned char **Destadoexp; /* matriz de dependencias de estado explícitas */
! 176: unsigned char **Ddatoimp; /* matriz de dependencias de datos implícitos */
! 177: unsigned char **Ddir_imp; /* matriz de dependencias de direcciones implícitas */
! 178: unsigned char **Dpilaimp; /* matriz de dependencias de pila implícitas */
! 179: unsigned char **Destadoimp; /* matriz de dependencias de estado implícitas */
! 180:
! 181: unsigned char **ADdatoexp; /* matriz de antidependencias de datos explícitos */
! 182: unsigned char **ADdir_exp; /* matriz de antidependencias de direcciones explícitas */
! 183: unsigned char **ADpilaexp; /* matriz de antidependencias de pila explícitas */
! 184: unsigned char **ADestadoexp; /* matriz de antidependencias de estado explícitas */
! 185: unsigned char **ADdatoimp; /* matriz de antidependencias de datos implícitos */
! 186: unsigned char **ADdir_imp; /* matriz de antidependencias de direcciones implícitas */
! 187: unsigned char **ADpilaimp; /* matriz de antidependencias de pila implícitas */
! 188: unsigned char **ADestadoimp; /* matriz de antidependencias de estado implícitas */
! 189:
! 190: unsigned char **Sdatoexp; /* matriz de dependencias de salida de datos explícitos */
! 191: unsigned char **Sdir_exp; /* matriz de dependencias de salida de direcciones explícitas */
! 192: unsigned char **Spilaexp; /* matriz de dependencias de salida de pila explícitas */
! 193: unsigned char **Sestadoexp; /* matriz de dependencias de salida de estado explícitas */
! 194: unsigned char **Sdatoimp; /* matriz de dependencias de salida de datos implícitos */
! 195: unsigned char **Sdir_imp; /* matriz de dependencias de salida de direcciones implícitas */
! 196: unsigned char **Spilaimp; /* matriz de dependencias de salida de pila implícitas */
! 197: unsigned char **Sestadoimp; /* matriz de dependencias de salida de estado implícitas */
! 198:
! 199: unsigned char **D; /* matriz composición de todas las dependencias */
! 200: };
! 201:
! 202:
! 203: /* defino tipo para salvar parámetros relativos a las matrices de dependencias */
! 204:
! 205: typedef struct {
! 206: double Ddatoexp; /* parámetro asociado a matriz de dependencias de datos explícitos */
! 207: double Ddir_exp; /* parámetro asociado a matriz de dependencias de direcciones explícitas */
! 208: double Dpilaexp; /* parámetro asociado a matriz de dependencias de pila explícitas */
! 209: double Destadoexp; /* parámetro asociado a matriz de dependencias de estado explícitas */
! 210: double Ddatoimp; /* parámetro asociado a matriz de dependencias de datos implícitos */
! 211: double Ddir_imp; /* parámetro asociado a matriz de dependencias de direcciones implícitas */
! 212: double Dpilaimp; /* parámetro asociado a matriz de dependencias de pila implícitas */
! 213: double Destadoimp; /* parámetro asociado a matriz de dependencias de estado implícitas */
! 214:
! 215: double ADdatoexp; /* parámetro asociado a matriz de antidependencias de datos explícitos */
! 216: double ADdir_exp; /* parámetro asociado a matriz de antidependencias de direcciones explícitas */
! 217: double ADpilaexp; /* parámetro asociado a matriz de antidependencias de pila explícitas */
! 218: double ADestadoexp; /* parámetro asociado a matriz de antidependencias de estado explícitas */
! 219: double ADdatoimp; /* parámetro asociado a matriz de antidependencias de datos implícitos */
! 220: double ADdir_imp; /* parámetro asociado a matriz de antidependencias de direcciones implícitas */
! 221: double ADpilaimp; /* parámetro asociado a matriz de antidependencias de pila implícitas */
! 222: double ADestadoimp; /* parámetro asociado a matriz de antidependencias de estado implícitas */
! 223:
! 224: double Sdatoexp; /* parámetro asociado a matriz de dependencias de salida de datos explícitos */
! 225: double Sdir_exp; /* parámetro asociado a matriz de dependencias de salida de direcciones explícitas */
! 226: double Spilaexp; /* parámetro asociado a matriz de dependencias de salida de pila explícitas */
! 227: double Sestadoexp; /* parámetro asociado a matriz de dependencias de salida de estado explícitas */
! 228: double Sdatoimp; /* parámetro asociado a matriz de dependencias de salida de datos implícitos */
! 229: double Sdir_imp; /* parámetro asociado a matriz de dependencias de salida de direcciones implícitas */
! 230: double Spilaimp; /* parámetro asociado a matriz de dependencias de salida de pila implícitas */
! 231: double Sestadoimp; /* parámetro asociado a matriz de dependencias de salida de estado implícitas */
! 232:
! 233: double D; /* parámetro asociado a matriz composición de todas las dependencias */
! 234: }parametromatriz;
! 235:
! 236:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>