¿Cuántos ciclos de CPU se necesitan para cada instrucción de ensamblaje?
Escuché que hay un libro de Intel en línea que describe los ciclos de CPU necesarios para una instrucción de ensamblaje específica, pero no puedo encontrarlo (después de esforzarme). ¿Podría alguien mostrarme cómo encontrar el ciclo de la CPU, por favor?
quí hay un ejemplo, en el siguiente código, mov / lock es 1 ciclo de CPU, y xchg es 3 ciclos de CPU.
// This part is Platform dependent!
#ifdef WIN32
inline int CPP_SpinLock::TestAndSet(int* pTargetAddress,
int nValue)
{
__asm
{
mov edx, dword ptr [pTargetAddress]
mov eax, nValue
lock xchg eax, dword ptr [edx]
}
// mov = 1 CPU cycle
// lock = 1 CPU cycle
// xchg = 3 CPU cycles
}
#endif // WIN32
BTW: aquí está la URL del código que publiqué:http: //www.codeproject.com/KB/threads/spinlocks.asp