Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Conocer la velocidad del procesador

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Tips & Tricks
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Conocer la velocidad del procesador Responder citando

code:
int GetCycleCount()
{
asm
{
DB 0FH
DB 031H
}
}

void __fastcall TFPrinc::Button1Click(TObject *Sender)
{
int Start, Stop;
Start = GetCycleCount();
Sleep(1000);
Stop = GetCycleCount();
Label1->Caption = ( (Stop-Start) / 1000141);
}


Volver arriba
Mensaje    Asunto: Responder citando

Hola, me da un warning:

El problema:
[C++ Warning] Unit1.cpp(24): W8070 Function should return a value

Que valor devuelve: GetCycleCount() ???

Un saludo.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Según la referencia de Intel (a partir de Pentium para arriba):
http://developer.intel.com/design/pentium/manuals/243191.htm
Opcode: 0F 31
Instruction: RDTSC
Description: Read time-stamp counter into EDX:EAX


Los registros en los que devuelve su valor son los que usa el Builder por defecto para el retorno en una función. Por lo que el aviso en este caso no es importante, si quieres puedes desactivarlo así:
Código:
// Desactivamos el aviso
#pragma warn -rvl
__int64 GetCycleCount()
{
    asm {
        DB 0FH
        DB 031H
    }

    // o puedes substituir lo de arriba por lo siguiente
    // si tu versión de builder te lo permite
    // asm RDTSC;
}
#pragma warn .rvl
// Lo restauramos al estado original

Lo que si es importante es cambiar los int por __int64, ya que el valor devuelto es de 64 bits y no 32 (incluido dentro de la función de ejemplo en el OnClick: __int64 Start, Stop;).
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Gracias _Leo.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

gracias
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Re: Conocer la velocidad del procesador Responder citando



Ultima edición por jc el Mie 11 May, 2005 10:54 am, editado 2 veces
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Re: Conocer la velocidad del procesador Responder citando

Perdón, se me ha ido la olla en el mensaje anterior, lo siento mucho.

R. Porcar escribió:

asm
{
DB 0FH
DB 031H
}


Hola:

Me podéis explicar este trozo de código, ya sea Roberto o Leo, o quien me pueda ayudar.

Yo es que programo microcontroadores también y nunca he sabido cómo funciona la orden DB (lo de "asm" está claro).

Un saludo.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.