Czy wie ktoś jak zrobić w Asemblerze procedurkę, co by wykonywała pustą pętlę przez x milisekund:
procedure Sleep(X: Cardinal);
asm
// <-- Tu ma być to czego nie wiem
end;
Chodzi oczywiście o wstawkę w Delphi, no nie? Będe wdzięczny za pomoc.
Czy wie ktoś jak zrobić w Asemblerze procedurkę, co by wykonywała pustą pętlę przez x milisekund:
procedure Sleep(X: Cardinal);
asm
// <-- Tu ma być to czego nie wiem
end;
Chodzi oczywiście o wstawkę w Delphi, no nie? Będe wdzięczny za pomoc.
Po co ci to w Delphi?
procedure Sleep(X: Cardinal);
asm
push X
call Sleep //ew. z @
end;
Ale jak dla mnie to troche bez sensu... Lepiej jest wykorzystac Timer.
Po co ci to w Delphi?
Mam procedurkę w D. do sprawdzania zagara CPU o w tej procedurze muszę zatrzymać wykonanie na ok 500ms i by było bardzuej optymalnie chcę Sleep nie w D. tylko w Asm.
Ale jak dla mnie to troche bez sensu... Lepiej jest wykorzystac Timer
Możliwe, że bez sensu, a ten Timer to w Asm? Asm jeszcze nie umiem - dopiero się uczę.
Ale jak dla mnie to troche bez sensu... Lepiej jest wykorzystac Timer
Możliwe, że bez sensu, a ten Timer to w Asm? Asm jeszcze nie umiem - dopiero się uczę.
Ale ja bym nie polegal na zadnej metodzie odmierzania czasu w ten sposob... Windows jest systemem wielozadaniowym i nigdy nie uzyskasz takiego. Najlepszym sposobem wyznaczenia zegara CPU, jaki mi przychodzi do glowy jest:
/* Ciekaw jestem, jak win liczy czestotliwosc, bo mi zawsze 801MHz wskazuje :P */
Na razie zostanę przy mojej procedurze, bo jest w miarę dokładna (błąd pomiariowy do 1 Mhz). A jak już się vaumiemm zrobię po twojemu :)
Mam jeszcze jedno pytanie: na czas działania proc. liczącej ustawić priorytet na real-time [???]