version 1.1, 2006/01/19 17:16:29
|
version 1.2, 2006/02/15 13:00:30
|
Line 22
|
Line 22
|
/* */ |
/* */ |
/* --------------------------- History --------------------------- */ |
/* --------------------------- History --------------------------- */ |
/* */ |
/* */ |
|
/* Revision 1.3. 02/2006 */ |
|
/* Improve interactive presentation in screen */ |
|
/* */ |
/* Revision 1.2. 01/2006 */ |
/* Revision 1.2. 01/2006 */ |
/* Added GPL License and JavaDoc style documentation */ |
/* Added GPL License and JavaDoc style documentation */ |
/* */ |
/* */ |
Line 30
|
Line 33
|
/* */ |
/* */ |
/********************************************************************/ |
/********************************************************************/ |
|
|
|
|
/******************************************************************************/ |
/******************************************************************************/ |
/* MÓDULO: GUI.c */ |
/* MÓDULO: GUI.c */ |
/* */ |
/* */ |
Line 41
|
Line 43
|
|
|
#include <stdio.h> |
#include <stdio.h> |
#include <string.h> |
#include <string.h> |
|
#include <time.h> |
|
|
#include "defines.h" |
#include "defines.h" |
#include "tipos.h" |
#include "tipos.h" |
Line 54 extern struct argumentos configuracion;
|
Line 57 extern struct argumentos configuracion;
|
extern unsigned long instruccion, ventana; |
extern unsigned long instruccion, ventana; |
|
|
|
|
|
/* esta función presenta en la pantalla información acerca del análisis en curso */ |
|
void PresentarConfiguracionPantalla() |
|
{ |
|
/* información sobre origen de datos y rango a procesar */ |
|
printf("Procesando %s en '%s' (rango %2.2f%% desde %2.2f%%)\n\n", |
|
configuracion.origen==TRAZA ? "traza":"secuencia", |
|
configuracion.ficherodatos, |
|
configuracion.rango, |
|
configuracion.comienzo); |
|
|
|
/* información sobre el tamaño de la ventana de instrucciones */ |
|
printf("Tamaño de la ventana = %d instrucciones\n\n", configuracion.ventana); |
|
|
|
/* información sobre las contribuciones a tener en cuenta en */ |
|
/* la composición de dependencias de datos */ |
|
printf("Mapa de composción de dependencias:\n"); |
|
printf("(T A O) (E I) (D A S C)\n"); |
|
|
|
printf("(%c %c %c) (%c %c) (%c %c %c %c)", |
|
configuracion.verdaderas==SI ? 'x':'o', |
|
configuracion.antidependencias==SI ? 'x':'o', |
|
configuracion.salida==SI ? 'x':'o', |
|
configuracion.explicitos==SI ? 'x':'o', |
|
configuracion.implicitos==SI ? 'x':'o', |
|
configuracion.datos==SI ? 'x':'o', |
|
configuracion.direcciones==SI ? 'x':'o', |
|
configuracion.pila==SI ? 'x':'o', |
|
configuracion.cc==SI ? 'x':'o'); |
|
|
|
printf("\n\n"); |
|
} |
|
|
|
|
|
/* esta función muestra información acerca del procesamiento en curso */ |
|
|
|
void MostrarCabecera() |
|
{ |
|
if(configuracion.origen != CADENAHEX) |
|
{ |
|
printf("ADD 5.10 --Analizador de Dependencias de Datos--\n\n"); |
|
|
|
/* |
|
printf("Procesando %s en '%s' (rango %2.2f%%)\n\n", |
|
configuracion.origen==TRAZA ? "traza":"secuencia", |
|
configuracion.ficherodatos, |
|
configuracion.rango); |
|
*/ |
|
|
|
PresentarConfiguracionPantalla(); |
|
} |
|
} |
|
|
|
|
|
/* esta función muestra el estado de procesamiento */ |
|
|
|
void PresentarEstadoProcesamiento(unsigned long total, unsigned long encurso) |
|
{ |
|
time_t tiempo; |
|
struct tm *ptr_tm; |
|
char fechahora[40]; |
|
|
|
static char paso25; /* flags para indicar estado de procesamiento */ |
|
static char paso50; |
|
static char paso75; |
|
|
|
/* inicializo los flags la primera vez */ |
|
if(encurso == 1) {paso25=SI; paso50=SI; paso75=SI;} |
|
|
|
if(paso75==SI) |
|
{ |
|
if(paso50==SI) |
|
{ |
|
if(paso25==SI) |
|
{ |
|
if(((double)encurso/total) > 0.25) |
|
{ |
|
/* fecha y hora */ |
|
tiempo = time(NULL); |
|
ptr_tm = localtime(&tiempo); |
|
strftime(fechahora, MAX_LINE, "%d/%m/%y %H:%M", ptr_tm); |
|
printf("Completado el 25%% [%s]\n", fechahora); |
|
paso25=NO; |
|
} |
|
} |
|
else |
|
{ |
|
if(((double)encurso/total) > 0.50) |
|
{ |
|
/* fecha y hora */ |
|
tiempo = time(NULL); |
|
ptr_tm = localtime(&tiempo); |
|
strftime(fechahora, MAX_LINE, "%d/%m/%y %H:%M", ptr_tm); |
|
printf("Completado el 50%% [%s]\n", fechahora); |
|
paso50=NO; |
|
} |
|
} |
|
} |
|
else |
|
{ |
|
if(((double)encurso/total) > 0.75) |
|
{ |
|
/* fecha y hora */ |
|
tiempo = time(NULL); |
|
ptr_tm = localtime(&tiempo); |
|
strftime(fechahora, MAX_LINE, "%d/%m/%y %H:%M", ptr_tm); |
|
printf("Completado el 75%% [%s]\n", fechahora); |
|
paso75=NO; |
|
} |
|
} |
|
} |
|
} |
|
|
|
|
/* esta función muestra en la pantalla la información de la tarjeta de operandos */ |
/* esta función muestra en la pantalla la información de la tarjeta de operandos */ |
|
|
void MostrarTarjeta(fichainstruccion *tarjetaoperandos) |
void MostrarTarjeta(fichainstruccion *tarjetaoperandos) |
{ |
{ |
/* imprimo la tarjeta de la instrucción para ver si funciona bien */ |
/* imprimo la tarjeta de la instrucción para ver si funciona bien */ |
|
|
int i; |
int i; |
unsigned long total; |
unsigned long total; |
char cadena[MAX_LINE]; |
char cadena[MAX_LINE]; |
|
|
/* todo esto no funciona aquí */ |
/* todo esto no funciona aquí */ |
/* printf("\x01B[2J"); */ /* código de escape ANSI para borrar la pantalla */ |
/* printf("\x01B[2J"); */ /* código de escape ANSI para borrar la pantalla */ |
Line 71 void MostrarTarjeta(fichainstruccion *ta
|
Line 187 void MostrarTarjeta(fichainstruccion *ta
|
/* printf("\033[2J"); */ |
/* printf("\033[2J"); */ |
|
|
printf("\n"); |
printf("\n"); |
total = configuracion.ultima - configuracion.primera + 1; |
total = configuracion.ultima - configuracion.primera + 1; |
i = printf("-| instruccion %lu de %lu (%.2f%%) |", instruccion, total, 100.00*instruccion/total); |
i = printf("-| instruccion %lu de %lu (%.2f%%) |", instruccion, total, 100.00*instruccion/total); |
/* parece que '.2' redondea algo hacia arriba (llegamos al 100% cuando estamos en 99.99%) */ |
/* parece que '.2' redondea algo hacia arriba (llegamos al 100% cuando estamos en 99.99%) */ |
i += printf("-| ventana %lu de %lu (%d ins/ven) |", ventana, total/configuracion.ventana, configuracion.ventana); |
i += printf("-| ventana %lu de %lu (%d ins/ven) |", ventana, total/configuracion.ventana, configuracion.ventana); |
for(i; i<80; i++) printf("-"); |
for(i; i<80; i++) printf("-"); |
|
|
printf("%-14s ", tarjetaoperandos->hexadecimal); |
printf("%-14s ", tarjetaoperandos->hexadecimal); |
|
|
/* formato de instrucción (notación de INTEL) */ |
/* formato de instrucción (notación de INTEL) */ |
/* |
/* |
printf("%s%s", tarjetaoperandos->prefijo, tarjetaoperandos->prefijo[0]!='\0' ? " ":""); |
printf("%s%s", tarjetaoperandos->prefijo, tarjetaoperandos->prefijo[0]!='\0' ? " ":""); |
|
|
printf("%s", tarjetaoperandos->nemonico); |
printf("%s", tarjetaoperandos->nemonico); |
printf("%s%s", tarjetaoperandos->op1[0]!='\0' ? " ":"", tarjetaoperandos->op1); |
printf("%s%s", tarjetaoperandos->op1[0]!='\0' ? " ":"", tarjetaoperandos->op1); |
printf("%s%s%s", (tarjetaoperandos->op1[0]!='\0' && tarjetaoperandos->op2[0]!='\0') ? ",":"", tarjetaoperandos->op2[0]!='\0' ? " ":"", tarjetaoperandos->op2); |
printf("%s%s%s", (tarjetaoperandos->op1[0]!='\0' && tarjetaoperandos->op2[0]!='\0') ? ",":"", tarjetaoperandos->op2[0]!='\0' ? " ":"", tarjetaoperandos->op2); |
*/ |
*/ |
/* igual con la función del módulo 'Auxiliares.c' */ |
/* igual con la función del módulo 'Auxiliares.c' */ |
CadenaEnsamblador(tarjetaoperandos->prefijo, tarjetaoperandos->nemonico, tarjetaoperandos->op1, tarjetaoperandos->op2, INTEL, cadena); |
CadenaEnsamblador(tarjetaoperandos->prefijo, tarjetaoperandos->nemonico, tarjetaoperandos->op1, tarjetaoperandos->op2, INTEL, cadena); |
printf("%s", cadena); |
printf("%s", cadena); |
|
|
printf(" "); |
printf(" "); |
|
|
printf("(long:%d", tarjetaoperandos->longitud); |
printf("(long:%d", tarjetaoperandos->longitud); |
switch(tarjetaoperandos->salto) |
switch(tarjetaoperandos->salto) |
{ |
{ |
case INCONDICIONAL: |
case INCONDICIONAL: |
printf(" salto:INCONDICIONAL"); |
printf(" salto:INCONDICIONAL"); |
break; |
break; |
|
|
case NO_SALTO: |
case NO_SALTO: |
printf(" salto:NO SALTO"); |
printf(" salto:NO SALTO"); |
break; |
break; |
|
|
case TOMADO: |
case TOMADO: |
printf(" salto:TOMADO"); |
printf(" salto:TOMADO"); |
break; |
break; |
|
|
case NOTOMADO: |
case NOTOMADO: |
printf(" salto:NO TOMADO"); |
printf(" salto:NO TOMADO"); |
break; |
break; |
} |
} |
|
|
printf(" ALU=%d", tarjetaoperandos->ciclosALU); |
printf(" ALU=%d", tarjetaoperandos->ciclosALU); |
printf(" BIU=%d)\n", tarjetaoperandos->ciclosBIU); |
printf(" BIU=%d)\n", tarjetaoperandos->ciclosBIU); |
|
|
printf("\nExpl leido datos: %s", tarjetaoperandos->leidoexpldatos); |
printf("\nExpl leido datos: %s", tarjetaoperandos->leidoexpldatos); |
Line 135 void MostrarTarjeta(fichainstruccion *ta
|
Line 251 void MostrarTarjeta(fichainstruccion *ta
|
|
|
printf("\n"); |
printf("\n"); |
|
|
getchar(); |
getchar(); |
} |
} |
|
|
|
|
Line 144 void MostrarTarjeta(fichainstruccion *ta
|
Line 260 void MostrarTarjeta(fichainstruccion *ta
|
|
|
void MostrarVentana() |
void MostrarVentana() |
{ |
{ |
printf("\nEsta función no ha sido implementada\n"); |
printf("\nEsta función no ha sido implementada\n"); |
} |
} |
|
|
|
|