Zeit / Treads



  • Hallo,
    ich hätte da mal 2 Fragen:

    1. Wie kann ich unter ASM die aktuelle Zeit herausfinden. Wie kann ich eine Funktion benutzen die gleich funktioniert wie GetTickCount().
    Sodass ich die Rechenzeit z.Bsp einer Funktion in millisekunden und NICHT in Takten herausfinden kann.
    Wie kann ich in ASM eine Zeit warten wie z.Bsp. die Funktion Sleep(...) in WINAMPI

    2. Ist es möglich in ASM mit Threads zu arbeiten? wenn ja, wie?
    möchte einen Text anzeigen lassen, das 5 Sek. lang wärent den 5 Sek. aber trotzdem eine andere Funktion weiterhin asführen...

    danke
    cu para 😃

    danke.



  • 1. wahrscheinlich in dem du die entsprechenden Funktionen aufrufst 🙄

    2. ja natürlich ist das möglich



  • naja...
    1. nicht gerade die Antwort die ich mir erhofft habe.
    Ich wollte viel mehr was über die Interrupts wissen dieser Funktion. Diese Funktion ist aus C (das weisst auch du kingruedi, und hättest deshalb anders antworten können).

    2.

    Ist es möglich in ASM mit Threads zu arbeiten? wenn ja, wie?

    also wenn es jemand weiss, könnte jemand mir das ja sagen. Oder mir die Links zu diversen Seiten geben, die mir weiterhelfen könnten.

    danke!



  • Also Du hast vor ein Programm fuer RM-DOS zu schreiben?

    dann zu
    1. Bei addr. 0046Ch ist ein Zeitzaehler.
    2. Int 8 steuert den Zeitzaehler. D.h. dieser Interrupt wird immer wieder in einem bestimmten Intervall aufgerufen.
    Da laesst sich nun wunderbar ein hook dranpacken, der nach einer bestimmten Zeit irgendwas tut, waehrend in deinem Programm irgend etwas voellig anderes ablaeuft. (Nicht vergessen, in deinen hook eine Verbindung zum alten int8 einzubauen 😉 )



  • Wo soll dein Programm den laufen? Unter Win?

    Dann solltest du dir nal die API angucken, (die kann mensch nämlich von fast allen sprachen aus nutzen, und ist in keinerlei weise technisch an C gebunden). D.h. du könntest durchaus GetTickCount() nutzen. Solltest jedoch nach passenden Include-Files für deinen ASM gucken.

    Das selbe gilt auch für Threads, die kannst du (meine ich) auch über die API launchen. Vorsicht jedoch bei Speicherzugriffen, und vorallem wenn du das direkt machen willst. Multi Tasking basiert eigentlich auch nur auf dem TimerInterupt, jedoch kann es sein, dass diese Funkt. von einer evtl. Dos Box emuliert wird.
    Alternativ gibt es die Möglichkeit ne at Callback Funktion zu schreiben und die mittels SetTimer() an einen Timer zu knüpfen.

    mfg
    -bg-



  • Original erstellt von paranoiac:
    **1. Wie kann ich unter ASM die aktuelle Zeit herausfinden. Wie kann ich eine Funktion benutzen die gleich funktioniert wie GetTickCount().
    Sodass ich die Rechenzeit z.Bsp einer Funktion in millisekunden und NICHT in Takten herausfinden kann.
    **

    Wie das in Millisecs geht, ist mir ja klar, aber wie geht das in Takten?

    lg, phreaking



  • Original erstellt von paranoiac:
    naja...
    1. nicht gerade die Antwort die ich mir erhofft habe.
    Ich wollte viel mehr was über die Interrupts wissen dieser Funktion. Diese Funktion ist aus C (das weisst auch du kingruedi, und hättest deshalb anders antworten können).

    falls du es nicht weisst, man kann auch Funktionen in Assembler aufrufen, auch C Funktionen, wie genau das auf deinem System funktioniert entnimmst du am besten der entsprechenden Dokumentation.

    Google ist übrigens bei so Fragen auch sehr hilfreich.

    BTW.
    Falls du WinAPI benutzt, da sind Interrupts IMHO eh total out 🙂

    @phreaking
    rdtsc 🙂



  • Original erstellt von phreaking:
    **Wie das in Millisecs geht, ist mir ja klar, aber wie geht das in Takten?
    **

    Schau dir mal den asm-Befehl rdtsc an 🙂 liefert in edx:eax den aktuellen takcounter 🙂



  • Ich dachte, rdtsc liest auch die Zeit aus. Heißt das, wenn man rdtsc vor und nach einem nop ausführen würde, dann würde die Differenz sicher eins sein?

    lg, phreaking



  • Nicht unbedingt, da rdtsc und nop parallel ausgeführt werden können 🙂

    rdtsc liest den time stamp counter aus, eine Prozessorvariable, die jeden tick um 1 inkrementiert wird. Sieht man sehr schön in dem MHz-Thread, wo sich das wer zunutzen gemacht hat 🙂



  • Ist dieser Counter eigentlich manipulierbar?

    lg, phreaking



  • Nicht dass ich wüsste, wozu auch 🙂


Log in to reply