WinterN
23/11/2005, 07:15
Bueno, pues resulta que estaba yo compilando felizmente este emulador de Master System para la GP2X... y en uno de los archivos me da este error:
PrecisionTimer.cpp: In member function 'void PrecisionTimer::calibrate(int)':
PrecisionTimer.cpp:46: error: impossible constraint in 'asm'
PrecisionTimer.cpp:48: error: impossible constraint in 'asm'
El método en cuestión es éste:
void PrecisionTimer::calibrate(int s)
{
unsigned long long start;
unsigned long long stop;
if (verbose)
{
cout << "Calibrating:" << dec<< s << " seconds." << endl;
}
rdtsc(start); // <------------------------ ERROR AQUI
PORTABLE_SLEEP_FUNC;
rdtsc(stop); // <------------------------ ERROR AQUI
tick_per_second = (unsigned long long) ( stop - start );
tick_per_second = (tick_per_second / s);
if (verbose)
{
cout << "tick_per_second is: " << dec << tick_per_second << endl;
cout << "CPU seems to run at " << dec <<(tick_per_second / 1000000.0) << "Mhz." << endl;
}
}
He marcado las dos lineas erroneas. Despues de investigar un poco la funcion rdtsc, me he enterado que es una instrucción para contar los ciclos de reloj ejecutados en la arquitectura Pentium (de ahí que dé el error al compilar para ARM).
¿Alguien puede darme alguna alternativa? Gracias!!
PrecisionTimer.cpp: In member function 'void PrecisionTimer::calibrate(int)':
PrecisionTimer.cpp:46: error: impossible constraint in 'asm'
PrecisionTimer.cpp:48: error: impossible constraint in 'asm'
El método en cuestión es éste:
void PrecisionTimer::calibrate(int s)
{
unsigned long long start;
unsigned long long stop;
if (verbose)
{
cout << "Calibrating:" << dec<< s << " seconds." << endl;
}
rdtsc(start); // <------------------------ ERROR AQUI
PORTABLE_SLEEP_FUNC;
rdtsc(stop); // <------------------------ ERROR AQUI
tick_per_second = (unsigned long long) ( stop - start );
tick_per_second = (tick_per_second / s);
if (verbose)
{
cout << "tick_per_second is: " << dec << tick_per_second << endl;
cout << "CPU seems to run at " << dec <<(tick_per_second / 1000000.0) << "Mhz." << endl;
}
}
He marcado las dos lineas erroneas. Despues de investigar un poco la funcion rdtsc, me he enterado que es una instrucción para contar los ciclos de reloj ejecutados en la arquitectura Pentium (de ahí que dé el error al compilar para ARM).
¿Alguien puede darme alguna alternativa? Gracias!!