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>