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.


  • Mod

    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 Jungs

    Gruß Jens


Anmelden zum Antworten