rdtsc
은 프로세서의 타임 스탬프 카운터의 현재 값을 EDX와 EAX의 두 레지스터에로드한다는 것을 알고 있습니다. 나는 그런 식으로 할 필요가 x86에서 그것을 얻기 위해 (리눅스를 사용하는 가정) : x86 및 x86_x64에서 'rdtsc'를 다르게 사용해야하는 이유는 무엇입니까?
unsigned long lo, hi;
asm("rdtsc" : "=a" (lo), "=d" (hi));
return lo;
및 x86_x64에 대한
가 : unsigned long lo, hi;
asm("rdtsc" : "=a" (lo), "=d" (hi));
return(lo | (hi << 32));
는 이유입니까? 아무도 나에게 설명 할 수 있니?
그래서 'rdtsc'는 프로세서의 타임 스탬프 카운터의 현재 값을 EDX와 EAX의 두 레지스터에로드합니다. EAX에서 EDX까지의 레지스터가 아닙니다. (EAX, EBX, ECX, EDX) – mazix
rdtsc는 항상 64 비트 값을 반환하므로 32 비트 시스템에서는 EDX 및 EAX에 저장됩니다. 그렇습니다. – mvv1277