| |
|
|
Jac de Lad | allô Frank.
depuis einigen Tagen versuche je folgenden Delphiquelltext pour den XPIA umzuschreiben:
function GetCPUSPeed():Longword;stdcall;
var timerhigh,timerlow:dword;
begin
SetPriorityClass(GetCurrentProcess,REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread,THREAD_PRIORITY_TIME_CRITICAL);
try
asm
dw 310Fh
mov TimerLow,eax
mov TimerHigh,edx
end;
Sleep(1000);
asm
dw 310Fh
sub eax,TimerLow
sub edx,TimerHigh
mov TimerLow,eax
mov TimerHigh,edx
end;
Result:=Round(TimerLow/1000000);
finally
SetPriorityClass(GetCurrentProcess,NORMAL_PRIORITY_CLASS);
end;
end;
malheureusement ist chez mir mais rien rausgekommen. si du ou bien quelqu'un d'autre Lust en supplément hat peux il/vous/es den oui la fois paraphraser...
Jac
PS: qui Voir le texte source gibt qui aktuelle (pas qui nominale) Frequenz qui CPU dans MHz zurück. |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 14.05.2007 ▲ |
|
|
|
|
Frank Abbing | mon Code zur Systemzeitermittlung sieht ähnlich aus, seulement plan pour alle Prozesse gleichzeitig. Scheint mais pas überall trop marcher. Deinen Code peux je pas traduire. Weiss z.B. pas, quoi TRY ist, ou bien FINALY. |
|
|
| |
|
|
|
Jac de Lad | Try weist à, dass qui folgende Code probiert volonté soll et im Fehlerfall à cela Ende des Try-Blocks gesprungen wird (ist comment begin...end). Finally weist à, dass aussi im Fehlerfall (siehe Try) cela aufgeführt volonté soll (normalement Speicherfreigaben et so). |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 14.05.2007 ▲ |
|
|
|
|
Jac de Lad | je habs aussi encore pas geschafft, cela übersetzbar trop gestalten. quelques Funktionen doit sûrement invoked volonté...ist comment dit Delphi. mais qui Code ist sûrement, alors hat mir toujours richtige Ergebnisse geliefert.
Jac |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 14.05.2007 ▲ |
|
|
|
|
Frank Abbing | dw 310Fh
un Integerwert? Wofür ist qui, ou bien ist cela seulement un Abstandhalter?
mov TimerLow,eax mov TimerHigh,edx
Hm, woher venons car qui Werte dans den Registern EAX et EDX? Zumindest EDX c'est moi unklar. |
|
|
| |
|
|
|
Jac de Lad | Du überfragst mon savons. qui Quellcode wurde pas de mir entwickelt. je hatte ihn seulement chez einem befreundeten Programmierer conservé, comme je oui c'est ca cela gebraucht habe. Tut mir leid, je dachte, tu peux là quoi pratiquer la magie... |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 14.05.2007 ▲ |
|
|
|
|
Michael Wodrich | $310f est un hartcodierter: RDTSC mittels CoDec ermittelt; den Code gibts ab Pentium CPUs - mais mir bekannte Assembler traduire den pas.
belle Grüße Michael Wodrich
P.S.: Google ist zum RDTSC très auskunftsfreudig... |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 14.05.2007 ▲ |
|
|
|
|
Jac de Lad | dans Delphi gehts. je serait oui gern ne DLL hochladen, mais je peux maintenant aucun erzeugen, là je Delphi pas installiert habe. je hab aussi déjà alle Datenträger verpackt, weil je umziehe (zieht sich encore jusqu'à Ende des Monats). mais qui Funktion steckt aussi dans Parcival. |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 14.05.2007 ▲ |
|
|
|
|
Frank Abbing | @Micheal: MASM32 kennt den Befehl très wohl. seulement musst du ajuster sur Pentiumcode.
@Jac: fou, qui Code funktioniert oui wirklich! KompilierenMarqueSéparation {$cleq}
Declare x&
Cls
Print Ermittle Frequenz der CPU...
AsmStart CPUSpeed
.686p
invoke GetCurrentProcess
invoke SetPriorityClass,eax,REALTIME_PRIORITY_CLASS
invoke GetCurrentThread
invoke SetThreadPriority,eax,THREAD_PRIORITY_TIME_CRITICAL;
rdtsc
push eax
invoke Sleep,1000
rdtsc
pop ebx
sub eax,ebx
xor edx,edx
mov esi,1000000
div esi
push eax
invoke GetCurrentProcess
invoke SetPriorityClass,eax,NORMAL_PRIORITY_CLASS
pop eax
AsmEnd(x&)
Print ...+Str$(x&)+ MHz.
WaitInput
Fin
|
|
|
| |
|
|
|
Jac de Lad | Kannste oui avec comme Beispiel aufnehmen! |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 15.05.2007 ▲ |
|
|
|
|
Frank Abbing | oui, muss es chez Gelegenheit mais nochmal anpassen pour den 64 Bit Wert. Votre Code benutzt aussi seulement den Lowwert, alors seulement 32 Bit (Result:=Round(TimerLow/1000000)). Deswegen pourrait qui ermittelte Wert sur einigen Maschinen incorrect son. et mon Code entsprich deinem. |
|
|
| |
|
|
|
Jac de Lad | Hm, sur allen Rechnern, wohin je cela bisher getestet habe (aussi qui Benchmark de Parcival) lief qui Code einwandfrei. peut-être kannste cela oui encore changement, dass qui un Double zurückliefert, pour genauere Ergebnisse. Freut mich, dass je quoi brauchbares posten konnte. |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 16.05.2007 ▲ |
|
|
|