我知道rdtsc
將處理器時間戳計數器的當前值加載到兩個寄存器:EDX和EAX中。爲了得到它在x86我需要做的是這樣的(使用Linux假設):爲什麼我應該在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位值,因此對於存儲在EDX和EAX中的32位機器,是的,你是對的。 – mvv1277