Timerfunktion mit RDTSC auf AMD
-
Hi,
ich habe mir mit ein paar Schnipseln aus diese Forum eine kleine Timerfunktion gebastelt.
Nun ist der Befehl rdtsc bei den AMD Prozessoren wohl noch nicht
so lange dabei . Meine Frage nun was passiert wenn der Code auf einem alten
AMD Prozessor losgelassen wird, der diesen Befehl noch nicht unterstütz?
Was könnte man noch verbessern das der Funktion?unsigned long MyGetTickCount() { unsigned long A1, A2, A3, A4; static unsigned long MHZ=0; //initialisierung Aon MHZ CPU-Frequenz if(MHZ==0) { _asm{ rdtsc moA [A1], eax moA [A2], edx } Sleep(500); _asm{ rdtsc moA [A3], eax moA [A4], edx } A1=A3-A1; A2=A4-A2; MHZ=(A1+(A2*(2^32)))/500/1000; } //ende initialisierung //getickCount _asm{ rdtsc moA [A1], eax moA [A2], edx } return (A1+(A2*(2^32)))/1000/MHZ; //CPU-Tackt /MHZ }
-
Du bekommst eine Fehlermeldung
Warscheinlich #UD kann aber auch ein #GP sein.
-
der rdtsc befehl ist seit dem K6-2 drin (also pi mal daumen seit 9 jahren). hast du vor, dein programm auf ältere prozessoren loszulassen?
-
der rdtsc befehl ist seit dem K6-2 drin (also pi mal daumen seit 9 jahren). hast du vor, dein programm auf ältere prozessoren loszulassen?
Nö,
danke JungsGruß Jens