SoloCodigo

Programación General => ASM (Ensamblador) => Mensaje iniciado por: saxlevel en Martes 2 de Julio de 2002, 23:21

Título: Re: timer en ensamblador 80x86
Publicado por: saxlevel en Martes 2 de Julio de 2002, 23:21
Hola,

   necesito implementar un timer en ensamblador 80x86 para saber que tiempo tarda un programilla en ejecutarse. ¿Alguien podría decirme cómo podría hacerlo?

O bien, ¿saben si existe alguna función en C que devuelva el tiempo de ejecución de un programa?

Gracias.
Título: Re: timer en ensamblador 80x86
Publicado por: hangman/dos en Lunes 26 de Agosto de 2002, 19:21
Um... la verdad es que lo único que se me ocurre es que al iniciarse el programa pille la hora y al finalizarse lo mismo y las compares.
Título: Re: timer en ensamblador 80x86
Publicado por: saxlevel en Martes 3 de Septiembre de 2002, 22:29
Hola gracias por el consejillo, finalmente lo estoy haciendo programando el timer en C y llamando el código ensamblador desde C.
Título: timer en ensamblador 80x86
Publicado por: bench en Jueves 5 de Septiembre de 2002, 14:56
el ANSI C define la funcion clock_t clock() de la siguiente Manera:

el tipo clock_t permite representar la fecha y la hora del sistema como un entero largo.

La Funcion clock() devuelve un valor aproximado del tiempo que ha estado ejecutandose el programa que la llama. Para transformar ese valor en segundos, se divide por la macro CLOCK_PER_SEC. La funcion retorna -1 si esta cuenta de tiempo no esta disponible.

la macro CLOCK_PER_SEC esta definida en time.h y esel numero de pulsos por segundo del reloj del SISTEMA.

DEFINICIONES TOMADAS DEL LIBRO: C Manual de Referencia, Tercera Edicion, Herbert Schildt, SERIE McGRAW_HILL de Informatica.

De lo anterior podemos deducir que la funcion clock lo que realmente esta retornando es el numero de pulsos del reloj del sistema que han ocurrido durante el lapso de tiempo que ha estado ejecutandose el programa que la llama. De tal manera que si quisieramos tener una precision del tiempo tenscurrido en segundos,Milisegundo o microsegundos. Lo Obtendriamos de la siguiente manera:

double Tiempo_Segundos = (double) clock()/CLOCK_PER_SEC;

double Tiempo_Miliseg = (double) clock()/(CLOCK_PER_SEC/1000);

double Tiempo_Microseg = (double) clock()/(CLOCK_PER_SEC/1000000);

con lo cual se lograria la maxima presicion de los tiempos transcurridos entre cada llamada a clock().

Los conceptos son una transcripcion TEXTUAL y esta es mi interpretacion y todo es ANSI C de tal forma que debe funcionar en cualquier compilador de C++.

Espero que esta informacion te sirva de ayuda.