From 21f8a2c6d894c6350036419736d01b456811fcbd39296f5328e00e913d2c2991 Mon Sep 17 00:00:00 2001 From: Gabriel Lorenzo Date: Sat, 19 Oct 2002 18:17:39 +0000 Subject: [PATCH] mini-trazador rules --- ediv/CHANGE_LOG.txt | 21 ++++++ ediv/src/bmp2fnt/b2f.vcproj | 5 +- ediv/src/dlls/dlls.suo | Bin 18944 -> 20480 bytes ediv/src/dlls/edivstd/edivstd.c | 52 ++++++++++++--- ediv/src/dlls/edivstd/main.h | 1 + ediv/src/dlls/export.h | 25 ++++++-- ediv/src/ediv/compiler.c | 64 +++++++++++++------ ediv/src/ediv/compiler.h | 6 +- ediv/src/ediv/main.h | 2 +- ediv/src/shared/extern.h | 57 +++++++++-------- ediv/src/stub/ediv_export.c | 6 +- ediv/src/stub/inte.c | 99 ++++++++++++++++++++++++++--- ediv/src/stub/inte.h | 8 ++- ediv/src/stub/main.h | 14 +++- ediv/src/stub/stub.c | 19 ++++-- ediv/src/visual c/doku/doku.vcproj | 2 +- ediv/src/visual c/ediv_ws.suo | Bin 23552 -> 25600 bytes ediv/src/visual c/stub/stub.vcproj | 4 +- ediv/trazador/trazador.opt | Bin 56832 -> 51712 bytes ediv/trazador/trazador.plg | 12 ++-- 20 files changed, 301 insertions(+), 96 deletions(-) diff --git a/ediv/CHANGE_LOG.txt b/ediv/CHANGE_LOG.txt index 96ce849..e0118fa 100644 --- a/ediv/CHANGE_LOG.txt +++ b/ediv/CHANGE_LOG.txt @@ -6,6 +6,27 @@ claro identificar errores mediante un nombre en lugar de un numero. (Daijo) * Limpio el archivo extern.h y comentarizo segun las normas de ANSI C99. (Daijo) * Elimino varias variables no utilizadas en las dll's. (Daijo) + * Ahora el stub con trazador es aplicación de consola, desde la que podemos + trazar el programa con un "mini-trazador" que lleva incorporado. Así podemos + descubrir fácilmente dónde petan los programas (por ejemplo, robots.prg + peta en el collision). Por cierto, lo que muestra el trazador entre corchetes + al principio de cada línea es el imem donde comienza la sentencia. + (Er_Makina) + * Haciendo el mini_trazador he modificado inicio_sentencia(), ahora no tiene + bucle, sólo un par de asignaciones, así que en teoría eDIV debería compilar + ya correctamente en Windows 98. (Er_Makina) + * Cuando eDIV compila con la opción -d (y compilado en modo Debug), genera un + fichero ediv.lin donde se muestra la información que usa el trazador para + localizar el código correspondiente al imem actual. (Er_Makina) + +18/10/2002 +---------- + * Añadido el entrypoint "quit". Usadlo para liberar los recursos de la dll. + (Er_Makina) + * Arreglado get_id, que (en teoria) no se reseteaba al hacer frame. Ademas he + hecho que use las variables de la estructura reserved. (Er_Makina) + * Ahora se inicializan las locales son, father, bigbro y smallbro. (Er_Makina) + * Añadido exit() (accede a stub_quit mediante fp->Stub_Quit). (Er_Makina) 17/10/2002 ---------- diff --git a/ediv/src/bmp2fnt/b2f.vcproj b/ediv/src/bmp2fnt/b2f.vcproj index 004842d..7b98202 100644 --- a/ediv/src/bmp2fnt/b2f.vcproj +++ b/ediv/src/bmp2fnt/b2f.vcproj @@ -76,9 +76,10 @@ pIhg7L;oj%uj`o8cZqV!a6opeV8k3jARuK=g}|Bzlo@TLXyN}}02 z6O<)(IcNtRq9b&SPEiuMshUdgT|oQj0OgaNcH_%Q@sRS+)93`9q*AJ)ous8ea?0dLGxVU6YEJ*10hvnrv^Jj4|Et*FH~W%6cBw^HI8Db0t-Yz zs)id!RKo`q=r~{1sKIV6Mxx_<*=*n@IYQ*{H#v&0>J7Znsplz|!g|Fl^5$22<)kGk zp1Y!*tdEvC+@kO$mpYrVCc{gGsgk^%2rV_b8HlPCJp=L7tv5d;PgesjWldP7Oa@U5i92~7iAZ4t9AnyD@LFDCmkyuut$3P8(75#q5|M~XiKf593Z>7A<47j442c3};-YK}xkh2udmUYRt zt=oJCEKC<+&lM1&R&R0w7F8D8$aP!T*S>Bwo0i&dG30hb44;jPWwT^tjmyNtnX$e~ r8Oq%3%ld^HF}W6N#N<+IL}p#I!UHZdUvRlOAuyE3R&QU1RSNtCS(Gkk delta 572 zcmZuuL2FY%5dQXM(@N89cuLkJ?YIK;6d?{iX@#4cynQ9=li~y+1cIFiYPr4FYX$m zwl6*(VvzGd&_Hbnry@PJ>CuS9FDUaxO3);kS1RizGmxB0ac(%%Us1@%cuJ*_U4 z!ZG@pjL?rWZ5@A6#0d;xC}0CSorBqD0Rf$HnW;G@ctV|#}{qYMwptmL4C8QOW9{ z?Tk&Mafc@D6n)M}ezOU>9q%G9;b=_ViLazmsu90SxV}m`g357oy}L6M)sOg|+imF+ z*gmq=9*lolAAF-|+dJ6|j9~<){QBulgT@Ywh$VVy9i`cHnKsV#NCT#ziw8ZXf7$&^ zTYRn=(s$L@>%|n^PoCe??+gqI_gR$IQirIT>1_-%Y1_0g`iL&1`~Fu%&(B6XxrQfd Ttfw(7tuW>CLv374f) diff --git a/ediv/src/dlls/edivstd/edivstd.c b/ediv/src/dlls/edivstd/edivstd.c index a1ebc52..7e7f1c5 100644 --- a/ediv/src/dlls/edivstd/edivstd.c +++ b/ediv/src/dlls/edivstd/edivstd.c @@ -96,7 +96,10 @@ int ExportaFuncs(EXPORTAFUNCS_PARAMS) // DATOS LOCALES PREDEFINIDOS - // Estructura reserved - POR HACER: ¿preservar compatibilidad con DIV? + // Estructura reserved - POR HACER: ¿preservar compatibilidad con DIV? -> si + /* pero ¿Qué hacer con distance_1 y distance_2 (sinónimos de m8_object y old_ctype, + * respectivamente)? ya nos toparemos con ellas cuando hagamos el modo7. */ + LOCAL_STRUCT("reserved",0); _INT("process_id",0); _INT("id_scan",0); @@ -144,37 +147,62 @@ int ExportaFuncs(EXPORTAFUNCS_PARAMS) LOCAL("flags",0); LOCAL("transparency",128) ; + FUNCTION("exit",2,eDIV_Exit); FUNCTION("get_id",1,eDiv_GetId) ; FUNCTION("define_region",5,eDiv_DefineRegion) ; ENTRYPOINT( first_load ) ; - // POR HACER: funciones signal, get_id, system, exit, ignore_error... + // POR HACER: funciones signal, system, ignore_error... return TRUE; } +int eDIV_Exit(FUNCTION_PARAMS) +{ + int codigo=getparm(); + char* mensaje=getstrparm(); + + /* FIXME: ¿Qué hacemos con el mensaje? ¿Lo mostramos en un msgbox si no es ""? */ + #ifdef _WIN32 + MessageBox(0,mensaje,fp->nombre_program,0); + #else + printf("%s\n",mensaje); + #endif + + #ifdef _DEBUG + printf("dbg:\texit(): código de retorno: %d\n",codigo); + #endif + fp->Stub_Quit(codigo); + + /* Por si acaso :P */ + return codigo; +} + int eDiv_GetId(FUNCTION_PARAMS) { int i ,id1 ; int a = getparm() ; - if ( last_type == a ) - i = last_proc+1 ; - else + int* last_type=&reserved("type_scan",fp->procs_s[fp->proc_orden[*fp->proceso_actual]].id); + int* last_proc=&reserved("id_scan",fp->procs_s[fp->proc_orden[*fp->proceso_actual]].id); + + if ( *last_type == a ) + i = *last_proc+1 ; + else { i = 0 ; - last_type = a ; + *last_type = a ; + } for ( ; i < *fp->num_procs ; i++ ) { - last_proc = i ; + *last_proc = i ; id1 = fp->procs_s[ fp->proc_orden[ i ] ].id ; - //Si el proceso se corresponde con el type -// if ( fp->mem[ id1 + fp->varindex[ _res_process_type ] ] == a ) + /* Si el proceso se corresponde con el type */ if ( reserved("process_type",id1) == a ) { return ( fp->procs_s[ fp->proc_orden[ i ] ].id ) ; } } - last_proc = -1 ; + *last_type = 0 ; return 0 ; } @@ -199,6 +227,10 @@ int eDiv_DefineRegion(FUNCTION_PARAMS) return 1 ; } +int eDIV_Signal(FUNCTION_PARAMS) +{ + +} diff --git a/ediv/src/dlls/edivstd/main.h b/ediv/src/dlls/edivstd/main.h index 1c9368d..d62bc98 100644 --- a/ediv/src/dlls/edivstd/main.h +++ b/ediv/src/dlls/edivstd/main.h @@ -4,5 +4,6 @@ struct _regions regions[32] ; // Prototipos +int eDIV_Exit(FUNCTION_PARAMS); int eDiv_GetId(FUNCTION_PARAMS) ; int eDiv_DefineRegion(FUNCTION_PARAMS) ; \ No newline at end of file diff --git a/ediv/src/dlls/export.h b/ediv/src/dlls/export.h index b275bf2..c4044a2 100644 --- a/ediv/src/dlls/export.h +++ b/ediv/src/dlls/export.h @@ -28,6 +28,9 @@ * notifíquelo a Sion Entertainment en bugs@edivcentral.com */ +#ifndef __EDIV__EXPORT_H +#define __EDIV__EXPORT_H + #ifdef __cplusplus extern "C" { #endif @@ -38,7 +41,9 @@ extern "C" { //# define DllMain() WINAPI DllMain(HINSTANCE hInst, DWORD reason, LPVOID) # include #else - typedef enum { FALSE, TRUE } bool; + #ifndef bool + typedef enum { FALSE, TRUE } bool; + #endif #endif @@ -65,7 +70,7 @@ typedef struct { #include -// Funciones de exportación de datos +/* Funciones de exportación de datos */ typedef int (TYPEOF_EDIV_Export)(char* cadena, int nparam, void* hfuncion); typedef int (TYPEOF_EDIV_Export_Const)(char* cadena, int valor); typedef int (TYPEOF_EDIV_Export_Global)(char* cadena, int valor); @@ -81,19 +86,22 @@ typedef int (TYPEOF_EDIV_Export_Local_Struct)(char* cadena, int numregs); typedef int (TYPEOF_EDIV_Export_Entrypoint)(int ep, void* hfuncion); typedef int (TYPEOF_EDIV_Export_Priority)(int priority); -// Call_Entrypoint +/* Call_Entrypoint */ typedef int (TYPEOF_Call_Entrypoint)(int ep, ...); -// Dibuja +/* Dibuja */ typedef int (TYPEOF_Dibuja)(SDL_Surface *, SDL_Rect, SDL_Rect, int, int); -// Errores +/* Errores */ typedef void (TYPEOF_Runtime_Error)(int, ...); typedef void (TYPEOF_Critical_Error)(int, ...); -// Obtiene offset de variable indexada dinámicamente +/* Obtiene offset de variable indexada dinámicamente */ typedef int (TYPEOF_GetVarOffset)(tipo_t tipo,char* nombre); +/* Finaliza el stub (exit) */ +typedef void (TYPEOF_Stub_Quit)(int n); + // estilo BO2K, sólo para "defaultear" las funciones como NULL /*extern TYPEOF_EDIV_Export *EDIV_Export; extern TYPEOF_EDIV_Export_Const *EDIV_Export_Const; @@ -262,6 +270,7 @@ struct _fun_params{ TYPEOF_Runtime_Error *Runtime_Error ; TYPEOF_Critical_Error *Critical_Error ; TYPEOF_GetVarOffset *GetVarOffset ; + TYPEOF_Stub_Quit *Stub_Quit ; } ; @@ -305,4 +314,6 @@ void quit(void); #ifdef __cplusplus } -#endif \ No newline at end of file +#endif + +#endif /* __EDIV__EXPORT_H */ diff --git a/ediv/src/ediv/compiler.c b/ediv/src/ediv/compiler.c index 88fa0da..9d58e2a 100644 --- a/ediv/src/ediv/compiler.c +++ b/ediv/src/ediv/compiler.c @@ -118,6 +118,8 @@ void prepara_compilacion() *(prog+progsize)=0; _source=NULL; + + linsize=0; } void compila() @@ -296,7 +298,11 @@ void compila() } /* renombra temp.dj! al nombre del exe */ - rename("temp.dj!",outfilename); + if(rename("temp.dj!",outfilename)) { + printf(translate(33)); /* error escribiendo ejecutable */ + remove("temp.dj!"); + exit(1); + } /* ordenamos varindex */ ordena_varindex(); @@ -1004,13 +1010,8 @@ void add_code(int dir, int param, int op) { */ void inicio_sentencia(void) { - byte * p=ierror-1; inicio=imem; - linea1=linea; - columna1=0; - while (*p!=cr && *p!=lf && p>_source) { - columna1++; p--; - } + inicio_prg=(int)(ierror-prog); } /* @@ -1018,13 +1019,8 @@ void inicio_sentencia(void) */ void final_sentencia(void) { - byte * p=old_ierror_end-1; final=imem-1; - linea2=old_linea; - columna2=0; - while (*p!=cr && *p!=lf && p>=_source) { - columna2++; p--; - } + final_prg=(int)(old_ierror_end-prog); } /* @@ -1033,13 +1029,20 @@ void final_sentencia(void) void grabar_sentencia(void) { - if(debug && linf!=NULL) { + /*if(debug && linf!=NULL) { fwrite(&inicio,4,1,linf); fwrite(&final,4,1,linf); fwrite(&linea1,4,1,linf); fwrite(&columna1,4,1,linf); fwrite(&linea2,4,1,linf); fwrite(&columna2,4,1,linf); + }*/ + if(debug && linf!=NULL) { + fwrite(&inicio,4,1,linf); + fwrite(&final,4,1,linf); + fwrite(&inicio_prg,4,1,linf); + fwrite(&final_prg,4,1,linf); + linsize++; } } @@ -1052,9 +1055,14 @@ void escribe_lin(FILE* f) int b=0; int l; byte* progcomp; +#ifdef _DEBUG + FILE* ediv_lin; + int j; +#endif /* comprimimos el codigo fuente */ while(prog[b]!=0) b++; + b++; progcomp=e_malloc(b*2); l=b*2; if(compress(progcomp,&l,prog,b)) { @@ -1071,16 +1079,34 @@ void escribe_lin(FILE* f) free(progcomp); /* Escribe el tamaño del LIN */ - b=ftell(linf); #ifdef _DEBUG - printf("dbg: TAMANO LIN: %d\n",b); + printf("dbg: linsize: %d\n",linsize); + #endif + fwrite(&linsize,1,4,f); + #ifdef _DEBUG + ediv_lin=fopen("ediv.lin","w"); + fprintf(ediv_lin,"linsize: %d\n",linsize); #endif - fwrite(&b,1,4,f); - /* Escribe la información LIN (offset de cada sentencia en el prg y en el bytecode) */ fseek(linf,0,SEEK_SET); - while((b=fgetc(linf))!=EOF) + while((b=fgetc(linf))!=EOF) { fputc(b,f); + } + #ifdef _DEBUG + j=0; + fseek(linf,0,SEEK_SET); + while(!feof(linf)) { + fread(&b,1,4,linf); + fprintf(ediv_lin,"[%d] eml_start\t%d\n",j,b); + fread(&b,1,4,linf); + fprintf(ediv_lin,"[%d] eml_end \t%d\n",j,b); + fread(&b,1,4,linf); + fprintf(ediv_lin,"[%d] prg_start\t\t%d\n",j,b); + fread(&b,1,4,linf); + fprintf(ediv_lin,"[%d] prg_end \t\t%d\n",j++,b); + } + fclose(ediv_lin); + #endif fclose(linf); } diff --git a/ediv/src/ediv/compiler.h b/ediv/src/ediv/compiler.h index a5099e7..0de128c 100644 --- a/ediv/src/ediv/compiler.h +++ b/ediv/src/ediv/compiler.h @@ -235,8 +235,10 @@ struct { // Peephole, "mirilla" para el optimizador FILE * linf; /* En este temporal guardamos la info y luego lo agregamos al exe */ int inicio,final; /* Direcciones inicial y final de mem[] de la sentencia */ -int linea1,columna1; /* Posicion en la que comienza la sentencia en el fuente */ -int linea2,columna2; /* Posicion en la que acaba la sentencia en el fuente */ +//int linea1,columna1; /* Posicion en la que comienza la sentencia en el fuente */ +//int linea2,columna2; /* Posicion en la que acaba la sentencia en el fuente */ +int inicio_prg,final_prg; /* Direcciones inicial y final en el PRG de la sentencia */ +int linsize; void inicio_sentencia(void); /* Fija inicio, linea1, columna1 */ void final_sentencia(void); /* Fija final, linea2, columna2 */ diff --git a/ediv/src/ediv/main.h b/ediv/src/ediv/main.h index 0454de8..3dd1b26 100644 --- a/ediv/src/ediv/main.h +++ b/ediv/src/ediv/main.h @@ -26,7 +26,7 @@ #include "edivcfg/iniparser.h" //#define MULTI_ERROR // para activar el sistema multi-error (bugs a mansalva) -#define DEBUG_DLL // para mostrar información al cargar las DLLs +//#define DEBUG_DLL // para mostrar información al cargar las DLLs #define swap(a,b) {(a)^=(b);(b)^=(a);(a)^=(b);} diff --git a/ediv/src/shared/extern.h b/ediv/src/shared/extern.h index 22ebbbd..a73b43e 100644 --- a/ediv/src/shared/extern.h +++ b/ediv/src/shared/extern.h @@ -82,9 +82,12 @@ typedef int (TYPEOF_Dibuja)(SDL_Surface *, SDL_Rect , SDL_Rect , int , int ) ; typedef void (TYPEOF_Runtime_Error)(int, ...); typedef void (TYPEOF_Critical_Error)(int, ...); -// Obtiene offset de variable indexada dinámicamente +/* Obtiene offset de variable indexada dinámicamente */ typedef int (TYPEOF_GetVarOffset)(tipo_t tipo,char* nombre); +/* Finaliza el stub (exit) */ +typedef void (TYPEOF_Stub_Quit)(int n); + /* * ENTRY-POINTS * @@ -97,30 +100,29 @@ typedef int (TYPEOF_GetVarOffset)(tipo_t tipo,char* nombre); * Constantes para EDIV_Export_Entrypoint */ -#define EDIV_set_video_mode 1 // Al activar un nuevo modo de vídeo */ -#define EDIV_process_palette 2 // Al cargar una paleta */ -#define EDIV_process_active_palette 3 // Al modificar la paleta activa (usada en los fades) */ -#define EDIV_process_sound 4 // Al cargar un efecto sonoro */ -#define EDIV_process_map 5 // Al cargar un mapa */ -#define EDIV_process_fpg 6 // Al cargar un FPG */ -#define EDIV_process_fnt 7 // Al cargar una fuente */ -#define EDIV_background_to_buffer 8 // Volcar el fondo al buffer */ -#define EDIV_buffer_to_video 9 // Volcar el buffer a la memoria de video */ -#define EDIV_post_process_scroll 10 // Tras dibujar una ventana de scroll (sin los sprites) */ -#define EDIV_post_process_m7 11 // Tras dibujar una ventana de modo7 (sin los sprites) */ -#define EDIV_post_process_m8 12 // Tras dibujar una ventana de modo8 (sin los sprites) */ -#define EDIV_post_process_buffer 13 // Tras haber terminado de dibujarlo todo */ -#define EDIV_post_process 14 // Tras ejecutar el frame de un proceso (cualquier %) */ -#define EDIV_put_sprite 15 // Dibujar un sprite */ -#define EDIV_ss_init 16 // Inicio de salvapantallas */ -#define EDIV_ss_frame 17 // Frame de salvapantallas */ -#define EDIV_ss_end 18 // Fin de salvapantallas */ -#define EDIV_frame 19 // En cada frame */ -#define EDIV_trace 20 // Después de ejecutar cada instrucción de bytecode (solo en debug) */ -#define EDIV_debug 21 // Invocar al trazador - sentencia debug (solo en debug) */ -#define EDIV_first_load 22 // Se ejecuta al cargar la DLL en ejecucion */ -#define EDIV_quit 23 // Llamado por stub_quit() */ - +#define EDIV_set_video_mode 1 // Al activar un nuevo modo de vídeo +#define EDIV_process_palette 2 // Al cargar una paleta +#define EDIV_process_active_palette 3 // Al modificar la paleta activa (usada en los fades) +#define EDIV_process_sound 4 // Al cargar un efecto sonoro +#define EDIV_process_map 5 // Al cargar un mapa +#define EDIV_process_fpg 6 // Al cargar un FPG +#define EDIV_process_fnt 7 // Al cargar una fuente +#define EDIV_background_to_buffer 8 // Volcar el fondo al buffer +#define EDIV_buffer_to_video 9 // Volcar el buffer a la memoria de video +#define EDIV_post_process_scroll 10 // Tras dibujar una ventana de scroll (sin los sprites) +#define EDIV_post_process_m7 11 // Tras dibujar una ventana de modo7 (sin los sprites) +#define EDIV_post_process_m8 12 // Tras dibujar una ventana de modo8 (sin los sprites) +#define EDIV_post_process_buffer 13 // Tras haber terminado de dibujarlo todo +#define EDIV_post_process 14 // Tras ejecutar el frame de un proceso (cualquier %) +#define EDIV_put_sprite 15 // Dibujar un sprite +#define EDIV_ss_init 16 // Inicio de salvapantallas +#define EDIV_ss_frame 17 // Frame de salvapantallas +#define EDIV_ss_end 18 // Fin de salvapantallas +#define EDIV_frame 19 // En cada frame +#define EDIV_trace 20 // Después de ejecutar cada instrucción de bytecode (solo en debug) +#define EDIV_debug 21 // Invocar al trazador - sentencia debug (solo en debug) +#define EDIV_first_load 22 // Se ejecuta al cargar la DLL en ejecucion +#define EDIV_quit 23 // Llamado por stub_quit() /* * Call_Entrypoint @@ -237,6 +239,7 @@ struct _fun_params{ TYPEOF_Runtime_Error *Runtime_Error ; TYPEOF_Critical_Error *Critical_Error ; TYPEOF_GetVarOffset *GetVarOffset ; + TYPEOF_Stub_Quit *Stub_Quit ; } fp ; @@ -247,8 +250,8 @@ struct _fun_params{ * int sp; */ -void* extfuncs[MAX_EXTERN_FUNCS]; /* tabla de punteros a las funciones de las DLLs (stub) -int extparms[MAX_EXTERN_FUNCS]; /* nº de parámetros de cada función externa (necesario para la sobrecarga) +void* extfuncs[MAX_EXTERN_FUNCS]; /* tabla de punteros a las funciones de las DLLs (stub) */ +int extparms[MAX_EXTERN_FUNCS]; /* nº de parámetros de cada función externa (necesario para la sobrecarga) */ struct _entrypoints { int tipo; /* Ver #defines de entrypoints más arriba */ diff --git a/ediv/src/stub/ediv_export.c b/ediv/src/stub/ediv_export.c index 5bede00..7d79a09 100644 --- a/ediv/src/stub/ediv_export.c +++ b/ediv/src/stub/ediv_export.c @@ -31,8 +31,8 @@ #include "main.h" #include "extern.h" -#include "parser.h" -#include "compiler.h" +//#include "parser.h" +//#include "compiler.h" #include "varindex.h" #include "language.h" @@ -811,7 +811,7 @@ int Call_Entrypoint(int ep, ...) funcion_ep=entrypoints[i].hfuncion; funcion_ep(_imem,_nombreprg,_lin,_dbg); } -#endif +#endif /* DBG */ } } diff --git a/ediv/src/stub/inte.c b/ediv/src/stub/inte.c index 779653d..c4a62d6 100644 --- a/ediv/src/stub/inte.c +++ b/ediv/src/stub/inte.c @@ -85,6 +85,11 @@ int ini_interprete() fp.Runtime_Error=error; fp.Critical_Error=critical_error; fp.GetVarOffset=GetVarOffset; + fp.Stub_Quit=stub_quit; + + #ifdef DBG + last_lin=0; + #endif /* DBG */ return 1 ; @@ -142,7 +147,7 @@ int interprete() { for ( proceso_actual = 0 ; proceso_actual < num_proc_orden ; proceso_actual++ ) { - proceso( proc_orden[ proceso_actual ] ) ; + proceso( proc_orden[ proceso_actual ], -1 ) ; } Call_Entrypoint(EDIV_frame); @@ -156,18 +161,21 @@ int interprete() } -int proceso( int num ) +int proceso( int num, int padre ) { int v1 ; int retcode = 0; int no_devuelve = 0 ; int (*externa)(struct _fun_params*); int temp ; - + #ifdef DBG + int actual_lin; + #endif + num_proc = num ; imem = procs_s[num_proc].imem ; - printf("num_proc: %d\n",num); + //printf("num_proc: %d\n",num); //if(num==972) assert(0); @@ -284,8 +292,8 @@ int proceso( int num ) procs_s[v1].imem = mem[imem++] ; temp = proceso_actual ; proceso_actual = lista_mete(v1) ; - procs_s[num_proc].imem = imem ; - proceso(v1) ; + procs_s[num_proc].imem = imem ; + proceso(v1,num_proc) ; proceso_actual = temp ; num_proc = num ; imem = procs_s[num_proc].imem ; @@ -300,6 +308,7 @@ int proceso( int num ) break; case lfrm://29 procs_s[num_proc].imem = imem ; + reserved("type_scan",procs_s[num_proc].id)=0; /* resetea get_id() */ if ( first_loaded ) { Call_Entrypoint(EDIV_first_load); @@ -321,8 +330,20 @@ int proceso( int num ) critical_error(3); // redefinición del tipo de proceso procs_s[num_proc].id = mem[2] + ( num_proc * iloc_len ) ; if(procs_s[num_proc].id>imem_max-iloc_len) critical_error(8); // demasiados procesos en ejecución - reserved("process_id",procs_s[num_proc].id)=procs_s[num_proc].id; memcpy(&mem[procs_s[num_proc].id],&mem[iloc],iloc_pub_len<<2); + reserved("process_id",procs_s[num_proc].id)=procs_s[num_proc].id; + if(padre!=-1) { + int bigbro; + if(bigbro=local("son",procs_s[padre].id)) { + local("smallbro",bigbro)=procs_s[num_proc].id; + local("bigbro",procs_s[num_proc].id)=bigbro; + } + local("son",procs_s[padre].id)=procs_s[num_proc].id; + local("father",procs_s[num_proc].id)=procs_s[padre].id; + } + else { + local("father",procs_s[num_proc].id)=0; + } procs_s[num_proc].tipo = mem[ imem++ ] ; reserved("process_type",procs_s[num_proc].id) = procs_s[num_proc].tipo ; inicio_privadas=mem[6]; @@ -436,7 +457,7 @@ int proceso( int num ) break ; case ldbg://58 #ifdef DBG - Call_Entrypoint(EDIV_debug,imem,nombreprg,lin,0); + Call_Entrypoint(EDIV_debug,imem,nombre_program,lin,0); #endif break ; @@ -507,8 +528,22 @@ int proceso( int num ) break; } #ifdef DBG - Call_Entrypoint(EDIV_trace,imem,nombreprg,lin,0); - #endif + Call_Entrypoint(EDIV_trace,imem,nombre_program,lin,0); + #ifdef _DEBUG + actual_lin=localiza_lin(imem); + if(actual_lin!=last_lin) { + unsigned char* p=&prog[lin[actual_lin*4+3]]; +// printf("[%d|%d-%d] ",imem,lin[actual_lin*4+3],lin[actual_lin*4+4]); + printf("[%d] ",imem); + while(p<=&prog[lin[actual_lin*4+4]]) { + putc(*p,stdout); + p++; + } + printf("\n"); + last_lin=actual_lin; + } + #endif /* _DEBUG */ + #endif /* DBG */ } if ( devolver > 0 && no_devuelve == 0 ) @@ -522,5 +557,49 @@ int proceso( int num ) return 1 ; } +#ifdef DBG +/* + * int localiza_lin (int ip) + * Localiza el imem actual (ip) en la tabla LIN (es decir, localiza en qué línea y + * columna del PRG nos encontramos). + * + * Retorna: + * ((El índice en lin[])-1)/4 <- sentiende no? + */ +int localiza_lin(int ip) +{ + lin_item* last; + int i; + /* Primero, para ahorrar tiempo, comprueba si aún seguimos dentro de la misma + sentencia, aunque sea distinto opcode */ + last=(lin_item*)(&lin[last_lin*4]); + if(last->inicio<=ip && last->fin>=ip) { + printf("(%d) last_lin\n",ip); + return last_lin; + } + + /* Si no, recorre la tabla LIN a partir de donde estábamos, no desde el principio, + ya que es más probable que hayamos saltado a una sentencia posterior que a una + anterior */ + for(i=last_lin;i=ip) + return i; + } + + /* No lo hemos encontrado, entonces buscaremos desde el principio hasta last_lin */ + for(i=0;i=ip) + return i; + } + + /* Si aún no lo hemos encontrado, mal rollito.. bug seguro, avisemos al programador */ + #ifdef _DEBUG + printf("PANIC! No se en que parte del PRG estoy! imem=%d, last_lin=%d\n",ip,last_lin); + #endif + + return last_lin; +} + +#endif /* DBG */ diff --git a/ediv/src/stub/inte.h b/ediv/src/stub/inte.h index 3e0ed0d..c6497b7 100644 --- a/ediv/src/stub/inte.h +++ b/ediv/src/stub/inte.h @@ -257,6 +257,10 @@ int ini_interprete() ; int busca_proc_libre() ; int lista_mete(int) ; int interprete() ; -int proceso(int) ; +int proceso(int num, int padre) ; -#endif \ No newline at end of file +#ifdef DBG +int localiza_lin(int ip); +#endif /* DBG */ + +#endif /* __INTE_H */ diff --git a/ediv/src/stub/main.h b/ediv/src/stub/main.h index e5d2967..0d63f0c 100644 --- a/ediv/src/stub/main.h +++ b/ediv/src/stub/main.h @@ -77,9 +77,19 @@ Uint8 * keys; // #ifdef DBG -char* prog; + +unsigned char* prog; int* lin; -#endif +int last_lin; +typedef struct _lin_item { + int inicio; + int fin; + int inicio_prg; + int fin_prg; +} lin_item; +int linsize; + +#endif /* DBG */ /// // PROTOTIPOS diff --git a/ediv/src/stub/stub.c b/ediv/src/stub/stub.c index 5145e39..abf4bcb 100644 --- a/ediv/src/stub/stub.c +++ b/ediv/src/stub/stub.c @@ -93,7 +93,6 @@ int main(int argc, char* argv[]) file_tiempo = fopen( "time.txt" , "w+" ) ; - #ifdef _WIN32 f=strlen(argv[0]); if(argv[0][f-4]!='.' || (argv[0][f-3]!='e' && argv[0][f-3]!='E') @@ -235,9 +234,21 @@ int main(int argc, char* argv[]) } free(progcomp); read(f,&linsize,4); - lin=(int*)e_malloc(linsize*6*4+4); + lin=(int*)e_malloc(linsize*4*4+4); lin[0]=linsize; - read(f,&lin[1],linsize); + + for(i=0;i +//#include void stub_quit(int n) { int i; diff --git a/ediv/src/visual c/doku/doku.vcproj b/ediv/src/visual c/doku/doku.vcproj index 4ff8d06..0751cdc 100644 --- a/ediv/src/visual c/doku/doku.vcproj +++ b/ediv/src/visual c/doku/doku.vcproj @@ -69,7 +69,7 @@ EnableFunctionLevelLinking="TRUE" UsePrecompiledHeader="0" WarningLevel="3" - Detect64BitPortabilityProblems="TRUE" + Detect64BitPortabilityProblems="FALSE" DebugInformationFormat="3"/> diff --git a/ediv/src/visual c/ediv_ws.suo b/ediv/src/visual c/ediv_ws.suo index a16a584bb7cbca4f997f68b01e59db35075614bad6bfcc6e308e4932422bceb6..6ed81fd4ec51f18ce79d4829701089f566d1f2c4b7b5230489a6b4c0d5873f05 100644 GIT binary patch delta 1354 zcmb`HO>7fK6vyAJ*NI7tKX!>@E0!>>fdIvF5;u)aV%bfxs-!L-LLfvAP0EJ?PKX-! zgOC;~_0S4hT0cT5p^!oe&@>cvFC3!CLLAaVk#eg5z0?|33cvErnKUG}8gN);pokxe1;N_g6# zFMEK&b3m7^ymOcSX9Ze&=`bCl_vDAXM4Vbt9VR*c2LaZn1W#)|o^b{_tJm^fEzF;3L3XWBjSeko$$LIj z{DKEO1J+s$p5UjRcDoOj6+GW@u6nE8z1UIeG>X-q+Qfb1NT9vaF7WI;0y32I0e1}UxPega2gDOGvFI=7JLWJfg9jF zm`5}h@V*E}!1v%1xD0*(SHLxJ709vIi5&DJ8e`xmFm9}>-y$+mm`5oEdDFC+UZp7N zI@(CDnRWxLIy|pa1XjxQrC>$yq(CdhP^ZnOl^Xceo^|=CUuZnOa;@0Jb3%_B@v|%@b7> zJQv?#4qasm?XxKKWKrq_UyXgD246UUba`o!$=E^POYmk3^61Pm`Zr$l(lk?b7Dl;D zAldTjFlvC82B$Db_RBKQ-7OjGAcZN+_nfQw^Ozs0=0#wgYUstqtv%F9-8>P?s;f=k z6<;a8JLnzUfgb9E3Rz_RyNfD#w0}h?S9i*I%HF`@yNT~QJj>RpM6JMWI%eRQH67mN zFeO1C%Wq>*?a}1;439MV`LrJ3vrV;puEo!;*wBAOG8yX;NaLl!X0ef8I)LlfiMn)T zPTp#db2{wRo3WWbY@?SFh(KOe;^CGWT;YX<+J9s@&?f%3grkpWkeVq2@%kZTdQrrF ztUkz2`%xJa{}tc9v97)$N{z_mR!j-w-y;7|RbWl&K$pt&MxH9 zM$|nJJ@gROn}p%FhoT=yPx=t$TMyAckdzO5iOO}pt_2t~0JIXqgb3jfp^XqFwDUJomfbz)v6L&WhfAH^;n{agrodV=FDSiCEt6iNb0kFF9_>!hyGQY0U--Fa}UhI6_cy(`D3*Qh0#? z!m`}M+G7V9V{jEN!whLZ>+p9x&^|4^XI(D7w*giT@738Utl1h7po#K{iM&?y%PL7G*_`{geE``f2qlF&)_ YISgHJoR @@ -135,7 +135,7 @@ makelib.bat win32.rel LinkIncremental="2" GenerateDebugInformation="TRUE" ProgramDatabaseFile="$(OutDir)/stub.pdb" - SubSystem="2" + SubSystem="1" TargetMachine="1"/> diff --git a/ediv/trazador/trazador.opt b/ediv/trazador/trazador.opt index 4fa83586b76e314d876dcae64079b39ed4507538a0d4022e906ec208b4819af7..ddc6d8c1cfa3356fde6b91198c924923c61ab7fbfb9eda76d905b39e488cb74f 100644 GIT binary patch literal 51712 zcmeI533L?4nSfiPTN;gSfo=(mBo3W`K)?uej|9UZ34}l(S~D#%V(uA9j4TBw7SunL6i8r*tlfJSJ7W@v%6unyKkD{O#`&<2}8#NUEzg?88q z+n@tFp$ob}$o1m(ferd$0Jg&pu)|Iea)Lb^55f=(!(P}2Bd{MvLC77%9fLz~7{=iU zs4xKz5ORO(&!FPtFRWB4J&G4Ms6?>j`aeaqn3&C`IMGfgKKZJOxlbjCe8xmaNIj?= zQ$mWLvT!IGmJDHs3R+Caz^zhDdK(pOSJ+`7di9iUr)aEvI!WE9%#psv(T#s{6jMSX z(GuW#(>IG`7SiugoQjLQic)wf9}DS={wmTIpXWWG<4)ES=6xT*You2dHVG{7N1mB zD<_n@I6j4Zl5!mX9OKcfGO5ha|H6zVLF59;X4=&u^gW(1t=vyZ7g5i}w5~yV;bzV> z(o>7DqK;PgFul7TYwhH01=eNLC)Qx?+Zi>+7)35&QzaH$#*$%1n+!&ui`d=Dh*XW_ zrx~pdFmmNEqTP+{m$7{{)_;qF*oA*LoJT&H)Dp=1Z5*E>wbO75f;nT8A4a1nN3M-}NQly5R+nn&*JgjEyvaY7%1`v|!oHe+isw$5{Y zCFg69t<~k*u%}IV73F;&v?EuET!`F-VG#Kml4Flm1TJ_;X$lbm0}`5v_PLN?`-16xS1R4+ph?O;IpB(k4|&7`yi_7HCc;ThDS zopg@luf_i%WFCb**ggn16TX`8J;WJ=t>~>n?;g?`gaXnkgcHcELhk*<{Qv}z4Z`m@ z{yhw#YZy#?CsSJ?&V?b5xcTr)WS)gY+T#%R?4yiE;1XqbCzMbUrBDXtPyv-t1>?va zfv+bh$~Rz^<2kSCj?voHq{H~}Z&6r6^$a2{@li*P4gfnDg@4biKAIpt8n7*URG7Udoop?vnk zC>(%;U_vGl8PRIm!Hb+9Dk#HBNa84&^9QkH3=Zk;JnlU0e4etIXUrL*4Gbw?BIPeb zB5{(46T5Fn#h;G91bwBjA04A`09<MdjEf z>RsG(gt0uV93?!Pa5H+cK$KQCft^!hdMJ;XJ+zaCLd9PT zm$tM9CP`}wj)DuO;TX8V177e!F4pHk7Cm7n=^e(>aqwW97jntDi5gKD>Gq;`A0*N0 zv(T7A?vlw>Iq{N7eHYdwGRDX5`y#{_f4$_d55~y#D3;!gj%w0g25I`8-eKya8NDJ0 zwdgQ$)W)dNMtSzqMtTU(p-q{oT{CUo%$Q^5nrX)JdCGpCGK-Ld2<@hccGHB`2xGZu zFGIAKA?0%k)5_dyY|_tx zY4URnR$=dISc;xv$ic2$=qGFdw!;qalU@K0BQvhcZAWgq@@4G%3e2Kw4#d?_{3p>( zoE|78A7yZwxMv`l79{?&cn`I;gd9|(%}ISZDCH#TEQQq4DZeyYwTiHO!rnyKa*hMkk+}cw!oqG4t+5w&(9V*uzm%MmK@v5Z0vW`8 zn7Adx9i}Yz!am3%{I!Ia6Q0ZQ8#u1!_z>p~!?-TvqkMey*=han7~ct;H9;Y5qzLjk zUjXMhcN^Reh3NYy^wpwomNK4$Zu|vkbyE&CgqQJM4!wjI5&liwZMbQ~eURg&$b1L4 zhp-alN}-;7Hb5gZfr&6N`ur<$oydvNYZHV?Wd>5w^#JFVpzGt*&SOwS*cS+^BdiCv zka&lPc^FO-=N3rU+d%{M(LkMvR7}dZk?ls-Li|TKt|0!~NbBwJ4tOWL3*HTv(QyTS zjoe=1yoG-BR(Kn{9o_-&gmiR0gp6pd|AK2pb~$O?1mC02eIF7@JqI4={MVr!nL7L{ z;T!n3;?G3St2r)3&)uYZ4?KatgLD6e+l8Bqd_9Je>3T|z<=Q1g})Ow5BDdyyK%SEZcMcDFgj;o7UrN2pACM1 zTt9NLIRzE@WaRq@UqbjZxO;G)#2vu>1?~`T5@k{VHvCKR{}lIUFv#&X^mjlfbb+6I z1mIVkALjf;j_-he{KfeDv10(X!w#^+PW?DKC-Fn%o(4OzHuUww0Bna8Y*+hfpW7vtzC9c7DLN|JPpcnceof0%t(`BSv4kmh%1%CvBivj}b~K z!q^g_A4KQ}5y~yXy{(&Tk((CQz_`*tTUCj3gf<}Bu$UuN;RxfGxTDIT4=eNoF_&f` z+^k$k$fS(Sj1Okoix~^e%I$=e5wDndPh-Q6VJW(c^)yuSd4zssR;r)^xl;V8xT&~H zD8sXq_Zs~5&;X4f?gpBn1=hkE?#|C(|5+$SPZ^|8Q+trC#J(zc!jxb#q2YK!o3inD z)23VLCohBB;3C`sm!XzAUIibaUp)q&fKS0^;PdbW_#%86z5-u^$KmVnO?U#n1>c76 z!uR0^@D%(Io`xU6Gw@UR1w0GCf#1UK;Scbi@L%v8{5L3+n+cL26*9mK7RZ4-$cG|W z3dK+goi<5sSfR_*aL$w1bLK1J`}+cco{wN0$hYk za3@@Wvy5El;5=M_JKz$CQEdX8pur@#AbNLdrf$rP(Pl;mGuJTD*FE%br}Ay;_dAeA z&1{7x(rAVjNMzJn_=p2J|3?dv^M7*wPtO0z`9C@TC+Gj<{GXivlkmH6|H<`#a{ZrN|0mb~$@PD7{hwU_C)fYU^?!d)>;L}J^VcJ+D)h2$P&^kM@3V~6 zx2Xt4pFY06=Z~v}(uL=b`&rp3uC2qYTvS2&DU1+7{s{To$hRj30nIPgqPsnW3RHqh^`CP6r(FLj*MG|OpK|@DT>mN8f6Dcra{Z@V|0&mh%JrXrFY7;# zJQH2`S#)*!t-fl+7kHidRN?O6tQ0E})QZtpVVKq3Vh5N&r=NeiT#dyKoVFDX+=tlPi zeKYpm{v59vkYpXMYE9xl8H`@Eiwy~u5Qh*d7YZq5$W=I!>Y@x1s9Ue z3_0E74rkEkX*im|HX@5e#a!otlqE1pJdYL*x*Q=RL0z2|4ElmbQt5#?my_}{mYGt6 zK{a9|lM$HnsMvJeNXQ%rIf6d7dqOp|Nw<8~<YEC1W zEQ-ME^vyZ7Ny7ro3HaS=*yWw^gu)TGVX}G-f^$BYZ}CLWXse zOye=iWTxJ1T;55;GEECOd~V|glN#{2JcgN14+OO-?YQ5_9E)h{)4oV3>~b7464Xo5 zGZWSf8&+1pHz9s4h*yQ#3soJ8TZ6fa8pSy6!^p<0fQNn@ZA3NSoEXVZ$b!8E^*GxtXxbFnj5N zDYtJzHI%W?6g?iFH?C!w0UAemmY=4KvY5WmLX2dx0!}ro(%&@Ia0u4hWH{p242vQ) z5U*yk0wLGD=J&Z>4#TmPzN@L>nV@lcVmx$t!Il1L zv9+xrT4DDjLUF9HBV?$F7LPl zeMY5~PBZmRx~7a|QUYA^jRf=&)8#Xi(W^zBak>l#@GLQayBP`NXv+xDRGcn{VG-zq z^f4_m;ZuW#7b&i?`bEkpj|`GpD5Oql6F%diTnsd`S}+tR2dP|TjLoNNW`ZH(Hf46W zeIYGwEt>;s$l-FuE3mA9-$%K|y;;f@d7OxZHD8b)uZ>Dg?`Bj%C}KDwWdt18Qv=bv zuXsacsy-|kS(P4ex>UE%u+dwh!%_U+sArKoP|Z7QlxC`a17jq?_z78U z6@SbX67d=p0}g3&yK7`udcdtld^3hJIRVd%oBIp?apGkJhN8Ivb%G3Vm5Q&HuFFl* z#7sCGuVJ{=3C-}%#T*E$6K<|T@$N|CrxyKhbn&;`|55J$DEEJq`#=8g@Bg^ZbcX$3 zr?2k+x|>yqdmx+rHgg~sx_B4e+RcRS3ZbBaAVkHRT*iyeiB;Sf7y9){CMJcz!B;9(d<-w@<; zwg3vD2YtP82l_6-&FDOXt`YR?hxZWgz3@IbgT5MUF2v>{cr{_Kf!D$?diR1@^Ms~ma$8_nceTrijS@^@C)F}`{$0lI zsvl&3&qv`Sa2s)Nha^^(Cb3`eIqZ4^8s7+Sf>Ba90A-|K4izAFz1#tJW5Ydg3OjB^ z;t**c2Ju#|40sp%-wp49H^Q6X&0xl!RP3q5o|~|zkhBX(Tf8wS07du<@wcLL11!N` zgntFCsRmNnjWn6K<=9sN%OI8TG}w&%7I0#Pm`J{v9ZZvuwIj0=$~mrp&1l*J8?b*P zp9m7;%z^NA&EN5Vu#v%D1bu!_yor%c!$e0?{Jw`J_sLze}G3J1+4|dI>NCE z6Oc$)4q-lY20(*Jh`lqdiQ{G%L3Tfk!T~r4V<6td!4B87?MB*Oqw;e0YqcZQ#CJ0| zka2M_n-fYER1hv&eLndwfG#w4 zgIKe@2F#q#Cm|ITT6;KIPPz}pqIot#* zK(wr6Sc@LwN-eKM_FEj+ z5%w9}YTQ@i4iWw-+)Dh%i7nom@{jmM3%`sj-hvavU5)!m+zP_4;BLbIY1}IOpU1rk zH;WO(0-wdd4FBhFm*f5kSG>t43H!t^Dxbh#PPmDdmq=etq;!(#bA6Pp4F))$$@wCTsM&dNmhU{2lM~9s@DBi0yO5dAgEYN6&lc157D1%Y*E#4_G%2?u~4f+VPV}qS? zu=CCY1>41Y4Eq>E`p91sbyQ2)yUCZE@u8Ny)*|PjPmWS9lb|tniuZ7hD*XwHG5~ks z@4~-}IJ@CI{x$e3(OCs|Kk)KKOqroIPHR^B@G;Fq0KeT^r z{u0b$M6@LKRZgu$yucHPB0F9~ARl0*T}z2`V^S z2{oJ(Iap6ht>8dkA=-8mx(5#6FTiibmUcLXJzEIdfb2#X$A%*?L-8IcMDK|f1Zo=Gzxfz!|#5%}(yV&m?`C{Uh z!29sOA3gvRgx`)_Cvr{1Z-$HbyYXAFAscdZH~KElGU9)fcpC8vDX}70Nt{(sqT4!+ zozs*_JLS{QIUDC}6%??KvZKkdp!&lGQXuwlD+^GYq}YdJ5j zp{>+&E9te8p18W#l2;MVKKi87OqsR7J^1g1mqQ*`;f?5OgH5m*wtyAdp^?_y1kKO_ zYhfK^(NipNnxhNY*M)rn+;-eP>f8pgcWd^ep&C1$pgjCYlp5Z6JXCQ~YVHg1ymC9;+H}bpP|+B9Vpt&%0Td=+IXIYpi<=^Gv{veG1rr zK8+~JaJ~D#9}r0_q%RKt+Ru&V|F2E&#qs}|^fUC8-9lrm^u#Lflo2)TINBULXo(%H zjUB9u*&ybQ7ws1%_kWW6Kgs={UT}XZ_kWW6KmFxR-sJjEx&HIdTmH%QpK|@@pq&4e z^S?Y_c8%+W-2X|g|CIB;VprWozlzBDUpfCP=YQq=ublsVDf7Q6to}49Rf+pe3Cex3 zNj=@&>GO)scK%O%EDd9<9+_92Vj-$FS#x6Tx{a-^Z5zAm*R}O@);BkI_11Uxu4}Dt zYU=1{YFgLT+|tu>GP+}o$Ut<3YjmFUIh>z>*iA;zU}7g5A@HL7cQtmc*54E=PW_EO zOtk8sm>WwrqhUj#bi zM**tyV?Z7#07YOBpn4v{dKfqkpa~c!fH#0|0VjcP10?qytWN{q1us#dC1^gKJ32+WL4_p8)0zU;v_A=I^z!>m0Fb+%rlfV^V3Lv?wSYHFK1Jl3_ z;Ag-L@N?iM@C)FVz$`EaRDdc#$IoN^F7O_(0Net81-uX320j2tj__-2*MTKq8Tb&m z3#Jt06YX7paqcJ*R|9Q51-g5 z8#TklIy5@au=nK@T1=Xk?Y?1`!=G&Z@%EW}f6Gz+Q;`*D4^g_v@WF*?NaSP*`49kc zk+qbKzFZ%KsO?fdvgGN1l2?rtt2t=*j7{j5*xLUx0{#6sjLwn0>MxNRI$5yP3=4G} zD;APH`}-b-emYl4H!XWP`V6pw}Fg>P1GtV+w?SWS1VE_eSKvm!sM ziuaw~55QEuAspEQ+e)|LKSh+4k7}_loL))iMLj05iZ0Fayj0Gr$Zm1Iz$3zzi@02gv~2{|=H} zPMaAx+zjL~^Y`}qw`giB+y4%CRdMc^0cL<1UVNzrO0?^LyaX+6cwUp|cLQGd zUe^oVgSUGF-uEuN;XRVyWw`+T%JI4TwTsw}-IwTBSO0>s2rUix?uYO>e+*E$_wEUP z2HxcR)&CCZFVh#r7fAFczxMxKd;$G6QqwJeKWZ+YdUzKqj)8mF| zB-{TEvOYL%W`G%B2ABb6fEi#0m;q*h8DIvO0cPMJ7-0L~L9ohcG6Sy%10R2p*#Ay# zPrn;2uh{OD$#PXT+v}xtck=R=yir+9X6)@Ee>#;fr^(c%BSoZM<+IB%6m#~AqvU-~ zTmM#DMBYIDoQ)5WowsIdXCsJcQA)n^QcU}8+vWOo95B{$?C0@ z9n%Uma>I2Q^~^@pNcLM2ugE!RRI1XKt|eWwQ-MhpQx#>{Rb2>RWL>k@$L{Cw60IIV zn(4SLvo69=baXOO`<HlUKAM)uZZ<7jPu4NjP<6@*-PWL!84T8N_S){6r<0<_jvqvA%MOftlT|N#{qDsLT04fXky! zU?^zGSS0-@XgC&RodSbFEFZ-i@UzfmXIQmN z@DSQ&Mte!l&a4CrL9-pl`YZCF%6xW8mMt7ldlOR(Y_x<(f8G=VM|8Zl_S`xVh$c=3 zVaD0ABSEX};F5(KE(}|1lf`uqy>T`pd1SFEwS8?Vh(*)E{er$isZmFfSeH#t+YSdK z%W23k)OXy&B=x}SM6qo?)U_j(T&s;Hmnju)dcL-)l~mTKPt}SYg_us6N(L2bZ|Hj+ z(xx1JG&jqtcroq=v=@{jB^9*wO`_1mlS&+EZ=Vu%9beytD=E>oZ0((cs=|k|)AU5B zRXRku-;iOH(L0rza@}?tCY}s*^dG0>nw?mBA>68TlB%MR!>FUZ5{(2tZZvGS-O9Y& zluXBqWM&qVM(edBZ9$ZjX@#CPcgMRAK~Z+*h!|YzrMsbHMXBAeEvc_v+!wZ5=mN8@ zz{%5S?>9ZnzMO^ae=mn;*1`-NMg~6Z{}k_kGWh*Zhp}=vPs{)_zzi@0%m6dM3@`)C zz}L(`I{yFs=uKN&h9Mpc3zkSL!pJs{|05a^kN@-dznYoCmKbh0VhwIPvHh3rzv`r5|F6WX$M#>g|FZuV z`+q6ZF8hBe|Nox*1@`|+2MXE$OPwO@|Fvrf3}xAEvHw@^v-&}7v;FrVSmiXCf!Bk9 zqS4>YXllJYg5LuxA~x?&q#Kjz#+7tqDlHw^4p*MWi{kiC9RI0n65;qy+tIu@{u9T4 znyYjCr>qKT-5Kj{n5*pPoh&?Xf0u{HJ8lNm+_G{*$`4a{Q<5 zxVt@P3des+pVq&;X8YflIpICbz&C|~0nGmEGs^w<`f|o+I|}`Q=Sl;yvJpzN+-TGn zD~%7AYISTzv1JO!DZZ8dS-Eq&v2=U3zPz|xZ!CYbSgY3NFD$sR4A+DyFP9e>5UkI&AIk55%5CTo*_FpSIHbdnj4$vnybVD&G6{v(Vb{M8HzJX8M4 z+m%a~jF($}7+TemuDd^t;@GNkgE4*o+$WQ>waII-lPXcUYG%9;2Xlg{{bY0QU(A3 diff --git a/ediv/trazador/trazador.plg b/ediv/trazador/trazador.plg index d7b680f..fe9e2fc 100644 --- a/ediv/trazador/trazador.plg +++ b/ediv/trazador/trazador.plg @@ -6,24 +6,28 @@ --------------------Configuration: Trazador - Win32 Debug--------------------

Command Lines

-Creating temporary file "C:\DOCUME~1\ADMINI~1\CONFIG~1\Temp\RSP6E.tmp" with contents +Creating temporary file "C:\DOCUME~1\ADMINI~1\CONFIG~1\Temp\RSPDD.tmp" with contents [ /nologo /MD /W3 /Gm /GX /ZI /Od /I "d:\Qt\include" /I "..\src\dlls" /I "..\src\kwrite" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "QT_DLL" /D "QT_THREAD_SUPPORT" /D "_USRDLL" /FR"Debug/" /Fp"Debug/Trazador.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /GZ /c "D:\ediv\trazador\main.cpp" +"D:\ediv\trazador\moc_trazadorwindow.cpp" +"D:\ediv\trazador\trazadorwindow.cpp" ] -Creating command line "cl.exe @C:\DOCUME~1\ADMINI~1\CONFIG~1\Temp\RSP6E.tmp" -Creating temporary file "C:\DOCUME~1\ADMINI~1\CONFIG~1\Temp\RSP6F.tmp" with contents +Creating command line "cl.exe @C:\DOCUME~1\ADMINI~1\CONFIG~1\Temp\RSPDD.tmp" +Creating temporary file "C:\DOCUME~1\ADMINI~1\CONFIG~1\Temp\RSPDE.tmp" with contents [ kernel32.lib user32.lib gdi32.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib imm32.lib wsock32.lib d:\Qt\lib\qt-mt230nc.lib d:\Qt\lib\qtmain.lib /nologo /subsystem:windows /dll /incremental:yes /pdb:"Debug/debug.pdb" /debug /machine:I386 /def:".\trazador.def" /out:"../bin/dll/debug.dll" /implib:"Debug/debug.lib" /pdbtype:sept .\Debug\main.obj .\Debug\moc_trazadorwindow.obj .\Debug\trazadorwindow.obj ] -Creating command line "link.exe @C:\DOCUME~1\ADMINI~1\CONFIG~1\Temp\RSP6F.tmp" +Creating command line "link.exe @C:\DOCUME~1\ADMINI~1\CONFIG~1\Temp\RSPDE.tmp"

Output Window

Compiling... main.cpp d:\ediv\trazador\main.cpp(51) : warning C4018: '<' : signed/unsigned mismatch +moc_trazadorwindow.cpp +trazadorwindow.cpp Linking... Creating library Debug/debug.lib and object Debug/debug.exp