(Assembler) Prozessor / Prozessortakt



  • Hallo!

    Kann mir einer sagen, wie ich in einem C++ Programm (auch asm möglich) den Prozessor und den Prozessortakt herausbekomme?
    Gibt da doch bestimmt vorgefertigte Funktionen oder?

    Falls ich wieder im falschen Bereich schreibe, tut es mir Leid. Hab noch nicht so den Überblick. Dann verschieben.

    Vielen Dank.
    BK



  • Ich würde dir empfehlen den Tackt mit dem ASM Befehl rdtsc auszulesen.
    Du liest die erste Zahl, dann schickst du dein Prog 1 sek zum schlafen, dann liest du den 2. Wert.
    Die differenz von beiden ist der CPU tackt.



  • Code?



  • Für welchen Compiler?

    Ich hab es unter VC so realisiert:

    void CheckRDTSCFreq() {
        clock_t start;
        LARGE_INTEGER startTCK;
        LARGE_INTEGER stopTCK;
    
        __asm { 
            rdtsc
            mov startTCK.HighPart, edx
            mov startTCK.LowPart.eax
        }
    
        start = clock();
    
        do {} while( CLOCKS_PER_SEC > clock() - start );
    
        __asm {
           rdtsc
           mov stopTCK.HighPart, edx
           mov stopTCK.LowPart, eax
        }
    
        // In _freq steht danach die frequenz
        _freq.QuadPart = ( stopTCK.QuadPart - startTCK.QuadPart )
    }
    

    Leider ist von meinen CPU Utils der GCC Port noch nicht fertig.

    Zuvor aber die CPU auf RDTSC testen.

    [Edit] Sorry - war ein Tippfehler im Code. Mußte natürlich eax heißen beim LowPart der Struct startTCK

    [ Dieser Beitrag wurde am 30.05.2003 um 20:30 Uhr von SnorreDev editiert. ]



  • Original erstellt von cbk18:
    **Falls ich wieder im falschen Bereich schreibe, tut es mir Leid. Hab noch nicht so den Überblick. Dann verschieben.
    **

    du kannst ja noch nicht wissen was standard c++ kann, Lösung : Prozessorspeed in MHZ

    thread verschoben ins asm forum. Assembler


Anmelden zum Antworten