| |
|
|
Jac de Lad | ¡Hola Franco.
Seit algunos Tagen versuche Yo folgenden Delphiquelltext para el 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;
Leider es en me aber nichts rausgekommen. Wenn du oder alguien más Lust dazu ha kann él/ellos/lo el sí veces umschreiben...
Jac
PS: Der Ver código fuente son el aktuelle (no el nominale) Frequenz el CPU en 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 | Mein Code a Systemzeitermittlung sieht ähnlich de, sólo eben para todos Prozesse gleichzeitig. Scheint pero no überall a trabajo. Su código kann Yo no traducir. Weiss z.B. no, qué TRY es, oder FINALY. |
|
|
| |
|
|
|
Jac de Lad | Try weist a, dass el folgende Code probiert voluntad se y en el Fehlerfall a el Ende des Try-Blocks gesprungen se (es como begin...end). Finally weist a, dass auch en el Fehlerfall (siehe Try) el aufgeführt voluntad se (normalerweise Speicherfreigaben y así). |
|
|
| 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 | Yo habs auch todavía no geschafft, el übersetzbar a gestalten. Einige Características necesario sicher invoked voluntad...es como dijo Delphi. Aber el Code es sicher, also ha me siempre 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
Ein Integerwert? Wofür es el, oder es el sólo una Abstandhalter?
mov TimerLow,eax mov TimerHigh,edx
Hm, woher kommen porque el Werte en el Registern EAX y EDX? Zumindest EDX me está unklar. |
|
|
| |
|
|
|
Jac de Lad | Usted überfragst mein Wissen. Der Quellcode wurde no de me entwickelt. Tuve ihn sólo en una befreundeten Programmierer obtener, como Yo genau el gebraucht habe. Tut me leid, Yo pensamiento, du kannst como qué zaubern... |
|
|
| 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 es una hartcodierter: RDTSC mittels CoDec ermittelt; el código gibts de Pentium CPUs - aber me bekannte Ensamblador traducir el no.
Schöne Grüße Michael Wodrich
P.S.: Google es para RDTSC muy auskunftsfreudig... |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 14.05.2007 ▲ |
|
|
|
|
Jac de Lad | In Delphi gehts. Yo sería sí gern ne DLL hochladen, pero yo kann ahora no erzeugen, como Yo Delphi no installiert habe. Yo auch ya todos Datenträger verpackt, porque Yo umziehe (zieht se todavía a Ende des Monats). Aber el Función steckt auch en 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 sabe el Befehl muy wohl. Nur musst du ajustar en Pentiumcode.
@Jac: Verrückt, el Code funktioniert sí wirklich! KompilierenMarcaSeparación {$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
End
|
|
|
| |
|
|
|
Jac de Lad | Kannste sí con como Ejemplo 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 | Sí, muss lo en Gelegenheit aber otra vez adaptar para el 64 Bit Valor. Su Code benutzt auch sólo el Lowwert, also sólo 32 Bit (Result:=Round(TimerLow/1000000)). Deswegen podría el ermittelte Valor en algunos Maschinen fehlerhaft ser. Und mein Code entsprich deinem. |
|
|
| |
|
|
|
Jac de Lad | Hm, en allen Rechnern, wo Yo el bisher getestet habe (auch el Benchmark de Parcival) lief el Code einwandfrei. Tal vez kannste el sí todavía ändern, dass el una Double zurückliefert, para genauere Ergebnisse. Freut mich, dass Yo qué brauchbares puesto podría. |
|
|
| 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 ▲ |
|
|
|