Quantos ciclos de CPU são necessários para cada instrução de montagem?
Ouvi dizer que há um livro online da Intel que descreve os ciclos da CPU necessários para uma instrução de montagem específica, mas não consigo descobrir (depois de me esforçar). Alguém poderia me mostrar como encontrar o ciclo da CPU, por favor?
Aqui está um exemplo, no código abaixo, mov / lock é 1 ciclo da CPU e xchg é 3 ciclos da CP
// 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
BTT: aqui está o URL do código que eu publiquei:http: //www.codeproject.com/KB/threads/spinlocks.asp