forked from KolibriOS/kolibrios
GMon
* Intel NortWood multiplier bugfix * some a small change git-svn-id: svn://kolibrios.org@313 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
2c4d922032
commit
e7d381a4b4
@ -1,8 +1,13 @@
|
|||||||
|
;
|
||||||
|
; Ghost Monitor - óòèëèòà (ñòðåññ) òåñòèðîâàíèÿ è ìîíèòîðèíãà ñèñòåìû
|
||||||
|
; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru)
|
||||||
|
; All Right Reserved
|
||||||
|
|
||||||
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
||||||
; SMBus interface
|
; SMBus interface
|
||||||
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
||||||
|
|
||||||
;include 'smb_nf2.inc'
|
include 'smb_nf2.inc'
|
||||||
|
|
||||||
smb_base dd 0 ; IO port base for SMBus acces
|
smb_base dd 0 ; IO port base for SMBus acces
|
||||||
smb_slave dd 0 ; SMBus addres for monitoring chip
|
smb_slave dd 0 ; SMBus addres for monitoring chip
|
||||||
|
@ -1,7 +1,11 @@
|
|||||||
|
;
|
||||||
|
; Ghost Monitor - утилита (стресс) тестирования и мониторинга системы
|
||||||
|
; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru)
|
||||||
|
; All Right Reserved
|
||||||
|
|
||||||
; 0x00xx - Menuet 0.xx
|
; 0x00xx - Menuet 0.xx
|
||||||
; 0x0400 - Kolibi 4 (новое завершение процесса)
|
; 0x0400 - Kolibi 4 (новое завершение процесса)
|
||||||
; 0x0510 - MSR -> множитель
|
; 0x0510 - MSR -> множитель (Kolibri 0.5.1.0)
|
||||||
; 0x0530 - всего/свободно памяти
|
; 0x0530 - всего/свободно памяти
|
||||||
; 0x0580 - новое завершение процесса
|
; 0x0580 - новое завершение процесса
|
||||||
OS_version equ 0x0580
|
OS_version equ 0x0580
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
;
|
||||||
|
; Ghost Monitor - утилита (стресс) тестирования и мониторинга системы
|
||||||
|
; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru)
|
||||||
|
; All Right Reserved
|
||||||
|
|
||||||
; struc DiagramData size,color
|
; struc DiagramData size,color
|
||||||
; {
|
; {
|
||||||
; .color dd color
|
; .color dd color
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
;
|
;
|
||||||
; Ghost Monitor - утилита (стресс) тестирования и мониторинга системы
|
; Ghost Monitor - утилита (стресс) тестирования и мониторинга системы
|
||||||
|
; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru)
|
||||||
|
; All Right Reserved
|
||||||
|
;
|
||||||
; ВОЗМОЖНА ПОРЧА ОБОРУДОВАНИЯ!
|
; ВОЗМОЖНА ПОРЧА ОБОРУДОВАНИЯ!
|
||||||
; ИСПОЛЬЗУЙТЕ НА СВОЙ СТРАХ И РИСК!
|
; ИСПОЛЬЗУЙТЕ НА СВОЙ СТРАХ И РИСК!
|
||||||
;
|
;
|
||||||
@ -46,7 +49,8 @@
|
|||||||
; 20/12/2006 - W83627DHG, W83627EHF, W83627EHG, mutipliers for AthonXP-M, Athlon64, Athlon64-M,
|
; 20/12/2006 - W83627DHG, W83627EHF, W83627EHG, mutipliers for AthonXP-M, Athlon64, Athlon64-M,
|
||||||
; Intel Dothan, Yonah, Conroe, Merom
|
; Intel Dothan, Yonah, Conroe, Merom
|
||||||
; 24/12/2006 - ITE chips model id bugfix by Serge
|
; 24/12/2006 - ITE chips model id bugfix by Serge
|
||||||
; 26/15/2006 - исправленна глупая ошибка в определении ITE и uGuru
|
; 26/12/2006 - исправленна глупая ошибка в определении ITE и uGuru
|
||||||
|
; 31/01/2007 - исправлена ошибка внесённая 17/07/06 в определение множителя для Intel NorthWood
|
||||||
;
|
;
|
||||||
; Эй! У меня нет много времени.
|
; Эй! У меня нет много времени.
|
||||||
|
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
;
|
||||||
|
; Ghost Monitor - утилита (стресс) тестирования и мониторинга системы
|
||||||
|
; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru)
|
||||||
|
; All Right Reserved
|
||||||
|
|
||||||
;
|
;
|
||||||
; HWM abstract interface, provide:
|
; HWM abstract interface, provide:
|
||||||
; hwm_init, hwm_get_params, hwm_enable, hwm_temps, hwm_rpms, hwm_voltages, hwm_chip_name
|
; hwm_init, hwm_get_params, hwm_enable, hwm_temps, hwm_rpms, hwm_voltages, hwm_chip_name
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
;
|
||||||
|
; Ghost Monitor - утилита (стресс) тестирования и мониторинга системы
|
||||||
|
; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru)
|
||||||
|
; All Right Reserved
|
||||||
|
|
||||||
; Integrated Technology Express
|
; Integrated Technology Express
|
||||||
; Chip Temp Volt Fan ISA SMBus
|
; Chip Temp Volt Fan ISA SMBus
|
||||||
; it8705 3 8 3 + +
|
; it8705 3 8 3 + +
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
;
|
||||||
|
; Ghost Monitor - утилита (стресс) тестирования и мониторинга системы
|
||||||
|
; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru)
|
||||||
|
; All Right Reserved
|
||||||
|
|
||||||
; ABIT uGuru
|
; ABIT uGuru
|
||||||
;
|
;
|
||||||
; Chip Temp Volt Fan ISA SMBus LPC
|
; Chip Temp Volt Fan ISA SMBus LPC
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
;
|
||||||
|
; Ghost Monitor - утилита (стресс) тестирования и мониторинга системы
|
||||||
|
; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru)
|
||||||
|
; All Right Reserved
|
||||||
|
|
||||||
;
|
;
|
||||||
; Áčáëčîňĺęŕ äë˙ ÷čďîâ WinBond
|
; Áčáëčîňĺęŕ äë˙ ÷čďîâ WinBond
|
||||||
;
|
;
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
;
|
||||||
|
; Ghost Monitor - óòèëèòà (ñòðåññ) òåñòèðîâàíèÿ è ìîíèòîðèíãà ñèñòåìû
|
||||||
|
; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru)
|
||||||
|
; All Right Reserved
|
||||||
|
|
||||||
;--------------------------------------------------------------------
|
;--------------------------------------------------------------------
|
||||||
; Çàãðóçêà ïðîöåññîðà
|
; Çàãðóçêà ïðîöåññîðà
|
||||||
; OUT : AL - çàãðóçêà â ïðîöåíòàõ
|
; OUT : AL - çàãðóçêà â ïðîöåíòàõ
|
||||||
@ -259,7 +264,7 @@ noAMD: cmp dword [Vendor + 8], 'ntel' ; Check for International Electronics CPU
|
|||||||
ret
|
ret
|
||||||
@@: cmp byte [CPU_mod], 2
|
@@: cmp byte [CPU_mod], 2
|
||||||
jae @f
|
jae @f
|
||||||
mov eax, 68 ; Pentium 4 / Xeon (model < 2)
|
mov eax, 68 ; Pentium 4 / Xeon (model < 2) Willamete
|
||||||
mov ebx, 3
|
mov ebx, 3
|
||||||
mov edx, 0x2A
|
mov edx, 0x2A
|
||||||
int 0x40
|
int 0x40
|
||||||
@ -267,17 +272,12 @@ noAMD: cmp dword [Vendor + 8], 'ntel' ; Check for International Electronics CPU
|
|||||||
and eax, 0x0F
|
and eax, 0x0F
|
||||||
mov cl, [p4coef + eax]
|
mov cl, [p4coef + eax]
|
||||||
ret
|
ret
|
||||||
@@: mov eax, 68 ; Pentium 4 / Xeon (model >= 2)
|
@@: mov eax, 68 ; Pentium 4 / Xeon (model >= 2) NorthWood
|
||||||
mov ebx, 3
|
mov ebx, 3
|
||||||
mov edx, 0x2C
|
mov edx, 0x2C
|
||||||
int 0x40
|
int 0x40
|
||||||
|
shr eax, 24
|
||||||
; shr eax, 24
|
and eax, 0x1F
|
||||||
; and eax, 0x1F
|
|
||||||
shr eax, 27
|
|
||||||
and al, 0Fh
|
|
||||||
add al, 8
|
|
||||||
|
|
||||||
mov dl, 10
|
mov dl, 10
|
||||||
mul dl
|
mul dl
|
||||||
mov cl, al
|
mov cl, al
|
||||||
@ -322,7 +322,7 @@ athloncoef db 110, 115, 120, 125, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 1
|
|||||||
athlonmcoef: db 110, 115, 120, 125, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 105
|
athlonmcoef: db 110, 115, 120, 125, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 105
|
||||||
db 30, 190, 40, 200, 130, 135, 14, 210, 150, 220, 160, 165, 170, 230, 240
|
db 30, 190, 40, 200, 130, 135, 14, 210, 150, 220, 160, 165, 170, 230, 240
|
||||||
athloncoef3 db 45, 50, 40, 55, 25, 30, 60, 35
|
athloncoef3 db 45, 50, 40, 55, 25, 30, 60, 35
|
||||||
p4coef db 160, 170, 180, 190, 200, 210, 220, 230, 80, 90, 100, 110, 120, 130, 140, 150 ; Pentium 4
|
p4coef db 160, 170, 180, 190, 200, 210, 220, 230, 80, 90, 100, 110, 120, 130, 140, 150 ; Pentium 4 (Willamete)
|
||||||
coppercoeff db 50, 30, 40, 20, 55, 35, 45, 25, 35, 70, 80, 60, 20, 75, 15, 65, 90, 110, 120, 20, 95, 115, 85, 25, 35, 70, 80, 100, 20, 75, 15, 105
|
coppercoeff db 50, 30, 40, 20, 55, 35, 45, 25, 35, 70, 80, 60, 20, 75, 15, 65, 90, 110, 120, 20, 95, 115, 85, 25, 35, 70, 80, 100, 20, 75, 15, 105
|
||||||
tualatcoeff db 120, 35, 35, 40, 55, 35, 115, 35, 160, 70, 80, 60, 40, 75, 35, 65, 90, 110, 35, 35, 95, 35, 85, 35, 35, 35, 130, 100, 140, 35, 150, 105
|
tualatcoeff db 120, 35, 35, 40, 55, 35, 115, 35, 160, 70, 80, 60, 40, 75, 35, 65, 90, 110, 35, 35, 95, 35, 85, 35, 35, 35, 130, 100, 140, 35, 150, 105
|
||||||
else
|
else
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
;
|
||||||
|
; Ghost Monitor - утилита (стресс) тестирования и мониторинга системы
|
||||||
|
; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru)
|
||||||
|
; All Right Reserved
|
||||||
|
|
||||||
|
|
||||||
mov edx, msg_about
|
mov edx, msg_about
|
||||||
mov ebx, 17 * 65536 + 285
|
mov ebx, 17 * 65536 + 285
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
;
|
||||||
|
; Ghost Monitor - утилита (стресс) тестирования и мониторинга системы
|
||||||
|
; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru)
|
||||||
|
; All Right Reserved
|
||||||
|
|
||||||
;
|
;
|
||||||
;
|
;
|
||||||
; <EFBFBD>ךכאהךא םאסענמוך
|
; <EFBFBD>ךכאהךא םאסענמוך
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
;
|
||||||
|
; Ghost Monitor - óòèëèòà (ñòðåññ) òåñòèðîâàíèÿ è ìîíèòîðèíãà ñèñòåìû
|
||||||
|
; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru)
|
||||||
|
; All Right Reserved
|
||||||
|
|
||||||
;
|
;
|
||||||
;
|
;
|
||||||
; Âêëàäêà èíôîðìàöèè î ñèñòåìå
|
; Âêëàäêà èíôîðìàöèè î ñèñòåìå
|
||||||
@ -29,7 +34,7 @@ mmx_en: int 0x40
|
|||||||
mov al, byte[edx]
|
mov al, byte[edx]
|
||||||
movzx esi, al
|
movzx esi, al
|
||||||
inc edx
|
inc edx
|
||||||
mov ebx, 160 * 65536 + 315
|
mov ebx, 160 * 65536 + 325
|
||||||
mov al, 4
|
mov al, 4
|
||||||
int 0x40
|
int 0x40
|
||||||
; ×àñòîòà ïðîöåññîðà
|
; ×àñòîòà ïðîöåññîðà
|
||||||
@ -88,7 +93,7 @@ mmx_en: int 0x40
|
|||||||
fstp dword[esp]
|
fstp dword[esp]
|
||||||
mov esi, esp
|
mov esi, esp
|
||||||
call ftoa
|
call ftoa
|
||||||
mov ebx, 160 * 65536 + 325
|
mov ebx, 160 * 65536 + 315
|
||||||
mov edx, Data_String
|
mov edx, Data_String
|
||||||
mov eax, 4
|
mov eax, 4
|
||||||
mov esi, eax
|
mov esi, eax
|
||||||
@ -130,6 +135,6 @@ lab_info_tab mls \
|
|||||||
'CPU Vendor',\
|
'CPU Vendor',\
|
||||||
'CPU frequency (MHz)',\
|
'CPU frequency (MHz)',\
|
||||||
'MMX tehnology',\
|
'MMX tehnology',\
|
||||||
'Monitoring chip',\
|
|
||||||
'Multiplier',\
|
'Multiplier',\
|
||||||
|
'Monitoring chip',\
|
||||||
'Free memory (Kb)'
|
'Free memory (Kb)'
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
;
|
||||||
|
; Ghost Monitor - утилита (стресс) тестирования и мониторинга системы
|
||||||
|
; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru)
|
||||||
|
; All Right Reserved
|
||||||
|
|
||||||
;
|
;
|
||||||
;
|
;
|
||||||
;
|
;
|
||||||
|
@ -1,62 +1,68 @@
|
|||||||
;
|
;
|
||||||
|
; Ghost Monitor - óòèëèòà (ñòðåññ) òåñòèðîâàíèÿ è ìîíèòîðèíãà ñèñòåìû
|
||||||
|
; Copyright (C) 2005, 2006, 2007 Mihailov Ilia (ghost.nsk@mail.ru)
|
||||||
|
; All Right Reserved
|
||||||
;
|
;
|
||||||
; k6, k7, p5 & p6 based on Robert Redelmeier's burnCPU tests
|
; k6, k7, p5 & p6 tests based on Robert J. Redelmeier cpuburn-1.4
|
||||||
; ported by Ghost
|
; Copyright 1999, 2000 Robert J. Redelmeier. All Right Reserved
|
||||||
|
; Licensed under GNU General Public Licence 2.0. No warrantee.
|
||||||
|
|
||||||
|
; adapted by Mihailov Ilia
|
||||||
;
|
;
|
||||||
; Çàìåòêè :
|
; Çàìåòêè :
|
||||||
; ïåðåïèñòü ðåàêöèþ íà îøèáêè
|
; ïåðåïèñòü ðåàêöèþ íà îøèáêè
|
||||||
|
|
||||||
k6:
|
k6:
|
||||||
finit
|
finit
|
||||||
push ebp
|
push ebp
|
||||||
mov ebp, esp
|
mov ebp, esp
|
||||||
and ebp, -32
|
and ebp, -32
|
||||||
sub esp, 96
|
sub esp, 96
|
||||||
fldpi
|
fldpi
|
||||||
fld qword [rtt]
|
fld qword [rtt]
|
||||||
fstp qword [ebp - 24]
|
fstp qword [ebp - 24]
|
||||||
fld qword [e]
|
fld qword [e]
|
||||||
fstp qword [ebp - 32]
|
fstp qword [ebp - 32]
|
||||||
mov edx, [half]
|
mov edx, [half]
|
||||||
mov [ebp - 8], edx
|
mov [ebp - 8], edx
|
||||||
k6_after_check:
|
k6_after_check:
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
mov ebx, eax
|
mov ebx, eax
|
||||||
lea esi, [eax - 1]
|
lea esi, [eax - 1]
|
||||||
mov ecx, 400000000
|
mov ecx, 400000000
|
||||||
mov [ebp - 4], ecx
|
mov [ebp - 4], ecx
|
||||||
align 32
|
align 32
|
||||||
;rev. eng. win. ver. (lea esi, [esi]) ; Ghost
|
;rev. eng. win. ver. (lea esi, [esi]) ; Ghost
|
||||||
k6_crunch:
|
k6_crunch:
|
||||||
fld qword [ebp+esi*8-16] ; CALC BLOCK
|
fld qword [ebp+esi*8-16] ; CALC BLOCK
|
||||||
fmul qword [ebp+esi*8-24]
|
fmul qword [ebp+esi*8-24]
|
||||||
add edx, [half + 9 + esi + esi * 8] ;!!!
|
add edx, [half + 9 + esi + esi * 8] ;!!!
|
||||||
jnz $ + 2
|
jnz $ + 2
|
||||||
faddp
|
faddp
|
||||||
fld qword [ebp+esi*8-16]
|
fld qword [ebp+esi*8-16]
|
||||||
dec ebx
|
dec ebx
|
||||||
sub edx, [half + 9 + esi + esi * 8] ;!!!
|
sub edx, [half + 9 + esi + esi * 8] ;!!!
|
||||||
jmp $ + 2
|
jmp $ + 2
|
||||||
fmul qword [ebp+esi*8-24]
|
fmul qword [ebp+esi*8-24]
|
||||||
inc ebx
|
inc ebx
|
||||||
dec dword [ebp+esi*8+4]
|
dec dword [ebp+esi*8+4]
|
||||||
fsubp
|
fsubp
|
||||||
jnz k6_crunch ; time for testing ?
|
jnz k6_crunch ; time for testing ?
|
||||||
|
|
||||||
test ebx, ebx ; TEST BLOCK
|
test ebx, ebx ; TEST BLOCK
|
||||||
jnz k6_int_exit
|
jnz k6_int_exit
|
||||||
cmp edx, [half]
|
cmp edx, [half]
|
||||||
jnz k6_int_exit
|
jnz k6_int_exit
|
||||||
fldpi
|
fldpi
|
||||||
fcomp st1
|
fcomp st1
|
||||||
fstsw ax
|
fstsw ax
|
||||||
sahf
|
sahf
|
||||||
jz k6_after_check
|
jz k6_after_check
|
||||||
dec ebx
|
dec ebx
|
||||||
k6_int_exit:
|
k6_int_exit:
|
||||||
dec ebx
|
dec ebx
|
||||||
add esp, 96
|
add esp, 96
|
||||||
pop ebp
|
pop ebp
|
||||||
mov eax, -1
|
mov eax, -1
|
||||||
int 0x40
|
int 0x40
|
||||||
;#######################################################################
|
;#######################################################################
|
||||||
@ -116,118 +122,118 @@ k7_int_exit:
|
|||||||
int 0x40
|
int 0x40
|
||||||
;#######################################################################
|
;#######################################################################
|
||||||
;#######################################################################
|
;#######################################################################
|
||||||
p5: finit
|
p5: finit
|
||||||
push ebp
|
push ebp
|
||||||
mov ebp, esp
|
mov ebp, esp
|
||||||
and ebp, -32
|
and ebp, -32
|
||||||
sub esp, 96
|
sub esp, 96
|
||||||
fld qword [half]
|
fld qword [half]
|
||||||
fstp qword [ebp - 24]
|
fstp qword [ebp - 24]
|
||||||
fld qword [rtt]
|
fld qword [rtt]
|
||||||
fst qword [ebp - 16]
|
fst qword [ebp - 16]
|
||||||
fld st
|
fld st
|
||||||
fld st
|
fld st
|
||||||
p5_after_check:
|
p5_after_check:
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
mov eax, ebx
|
mov eax, ebx
|
||||||
mov ecx, 200000000
|
mov ecx, 200000000
|
||||||
align 32
|
align 32
|
||||||
;# MAIN LOOP 16 flops / 18 cycles
|
;# MAIN LOOP 16 flops / 18 cycles
|
||||||
p5_crunch:
|
p5_crunch:
|
||||||
fmul qword [ebp - 24]
|
fmul qword [ebp - 24]
|
||||||
fxch st1
|
fxch st1
|
||||||
fadd qword [ebp - 16]
|
fadd qword [ebp - 16]
|
||||||
fxch st2
|
fxch st2
|
||||||
fmul qword [ebp - 24]
|
fmul qword [ebp - 24]
|
||||||
fxch st1
|
fxch st1
|
||||||
fadd qword [ebp - 16]
|
fadd qword [ebp - 16]
|
||||||
fxch st2
|
fxch st2
|
||||||
|
|
||||||
fmul qword [ebp - 24]
|
fmul qword [ebp - 24]
|
||||||
fxch st1
|
fxch st1
|
||||||
fadd qword [ebp - 16]
|
fadd qword [ebp - 16]
|
||||||
fxch st2
|
fxch st2
|
||||||
fmul qword [ebp - 24]
|
fmul qword [ebp - 24]
|
||||||
fxch st1
|
fxch st1
|
||||||
fadd qword [ebp - 16]
|
fadd qword [ebp - 16]
|
||||||
fxch st2
|
fxch st2
|
||||||
|
|
||||||
fmul qword [ebp - 24]
|
fmul qword [ebp - 24]
|
||||||
fxch st1
|
fxch st1
|
||||||
fadd qword [ebp - 16]
|
fadd qword [ebp - 16]
|
||||||
fxch st2
|
fxch st2
|
||||||
fmul qword [ebp - 24]
|
fmul qword [ebp - 24]
|
||||||
fxch st1
|
fxch st1
|
||||||
fadd qword [ebp - 16]
|
fadd qword [ebp - 16]
|
||||||
fxch st2
|
fxch st2
|
||||||
|
|
||||||
fmul qword [ebp - 24]
|
fmul qword [ebp - 24]
|
||||||
fxch st1
|
fxch st1
|
||||||
fadd qword [ebp - 16]
|
fadd qword [ebp - 16]
|
||||||
fxch st2
|
fxch st2
|
||||||
fmul qword [ebp - 24]
|
fmul qword [ebp - 24]
|
||||||
fxch st1
|
fxch st1
|
||||||
fadd qword [ebp - 16]
|
fadd qword [ebp - 16]
|
||||||
fxch st2
|
fxch st2
|
||||||
|
|
||||||
dec ecx
|
dec ecx
|
||||||
jnz p5_crunch
|
jnz p5_crunch
|
||||||
|
|
||||||
jmp p5_after_check
|
jmp p5_after_check
|
||||||
;#######################################################################
|
;#######################################################################
|
||||||
;#######################################################################
|
;#######################################################################
|
||||||
p6: finit
|
p6: finit
|
||||||
push ebp
|
push ebp
|
||||||
mov ebp, esp
|
mov ebp, esp
|
||||||
and ebp, -32
|
and ebp, -32
|
||||||
sub esp, 96
|
sub esp, 96
|
||||||
fldpi
|
fldpi
|
||||||
fld qword [rtt]
|
fld qword [rtt]
|
||||||
fstp qword [ebp - 24]
|
fstp qword [ebp - 24]
|
||||||
fld qword [e]
|
fld qword [e]
|
||||||
fstp qword [ebp - 32]
|
fstp qword [ebp - 32]
|
||||||
mov edx, [half]
|
mov edx, [half]
|
||||||
mov [ebp - 8], edx
|
mov [ebp - 8], edx
|
||||||
p6_after_check:
|
p6_after_check:
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
mov ebx, eax
|
mov ebx, eax
|
||||||
lea esi, [eax - 1]
|
lea esi, [eax - 1]
|
||||||
mov ecx, 539000000 ;# check after this count
|
mov ecx, 539000000 ;# check after this count
|
||||||
mov [ebp - 4], ecx
|
mov [ebp - 4], ecx
|
||||||
align 32
|
align 32
|
||||||
p6_crunch: ;# MAIN LOOP 21uops / 8.0 clocks
|
p6_crunch: ;# MAIN LOOP 21uops / 8.0 clocks
|
||||||
fld qword [ebp+esi*8-16]
|
fld qword [ebp+esi*8-16]
|
||||||
fmul qword [ebp+esi*8-24]
|
fmul qword [ebp+esi*8-24]
|
||||||
add edx, [half]
|
add edx, [half]
|
||||||
jnz $ + 2
|
jnz $ + 2
|
||||||
faddp
|
faddp
|
||||||
fld qword [ebp - 24]
|
fld qword [ebp - 24]
|
||||||
dec ebx
|
dec ebx
|
||||||
sub edx, [half + 9 + esi + esi*8]
|
sub edx, [half + 9 + esi + esi*8]
|
||||||
jmp $ + 2
|
jmp $ + 2
|
||||||
fmul qword [ebp+esi*8-24]
|
fmul qword [ebp+esi*8-24]
|
||||||
inc ebx
|
inc ebx
|
||||||
dec dword [ebp+esi*8+4]
|
dec dword [ebp+esi*8+4]
|
||||||
fsubp
|
fsubp
|
||||||
jnz p6_crunch
|
jnz p6_crunch
|
||||||
|
|
||||||
test ebx, ebx ;# Testing block
|
test ebx, ebx ;# Testing block
|
||||||
mov ebx, 0
|
mov ebx, 0
|
||||||
jnz p6_int_exit
|
jnz p6_int_exit
|
||||||
cmp edx, [half]
|
cmp edx, [half]
|
||||||
jnz p6_int_exit
|
jnz p6_int_exit
|
||||||
fldpi
|
fldpi
|
||||||
fcomp st1
|
fcomp st1
|
||||||
fstsw ax
|
fstsw ax
|
||||||
sahf
|
sahf
|
||||||
jz p6_after_check ;# fp result = pi ?
|
jz p6_after_check ;# fp result = pi ?
|
||||||
dec ebx
|
dec ebx
|
||||||
p6_int_exit: ;# error abort
|
p6_int_exit: ;# error abort
|
||||||
dec ebx
|
dec ebx
|
||||||
add esp, 96
|
add esp, 96
|
||||||
pop ebp
|
pop ebp
|
||||||
mov eax, -1
|
mov eax, -1
|
||||||
int 0x40
|
int 0x40
|
||||||
;---------------------------------------------
|
;---------------------------------------------
|
||||||
align 32
|
align 32
|
||||||
half dd 0x7fffffff, 0
|
half dd 0x7fffffff, 0
|
||||||
|
Loading…
Reference in New Issue
Block a user