File: burnP6.S

package info (click to toggle)
cpuburn 1.4-23
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 160 kB
  • ctags: 49
  • sloc: asm: 567; makefile: 44; sh: 7
file content (78 lines) | stat: -rw-r--r-- 1,378 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#  cpuburn-1.4:	 burnP6	  CPU Loading Utility
#  Copyright 1999  Robert J. Redelmeier.  All Right Reserved
#  Licensed under GNU General Public Licence 2.0.  No warrantee.
#  *** USE AT YOUR OWN RISK ***

.text 
#ifdef WINDOWS
.globl _main
_main:
#else
.globl _start
_start:
#endif
	finit
	pushl	%ebp
	movl	%esp, %ebp
	andl	$-32, %ebp
	subl	$96, %esp
	fldpi
	fldl	rt
	fstpl	-24(%ebp)
	fldl	e
	fstpl	-32(%ebp)
	movl	half, %edx
	movl	%edx, -8(%ebp)
after_check:
	xorl	%eax, %eax
	movl	%eax, %ebx
	lea	-1(%eax), %esi
	movl	$539000000, %ecx    # check after this count  
	movl	%ecx, -4(%ebp)	   
.align	32,  0x90
crunch:				   # MAIN LOOP	21uops / 8.0 clocks
	fldl	8-24(%ebp,%esi,8)  
	fmull	8-32(%ebp,%esi,8)
	addl	half, %edx
	jnz	. + 2
	faddp	
	fldl	-24(%ebp)
	decl	%ebx
	subl	half+9(%esi,%esi,8), %edx
	jmp	. + 2
	fmull	8-32(%ebp,%esi,8)
	incl	%ebx
	decl	8-4(%ebp,%esi,8)
	fsubp	
	jnz	crunch		

	test	%ebx, %ebx	# Testing block
	mov	$0, %ebx
	jnz	int_exit
	cmpl	half, %edx
	jnz	int_exit
	fldpi
	fcomp	%st(1)
	fstsw	%ax
	sahf
	jz	after_check	# fp result = pi ?
	decl	%ebx
int_exit:			# error abort
	decl	%ebx
	addl	$96,  %esp
	popl	%ebp
	movl	$1, %eax	# Linux syscall
#ifdef WINDOWS
	ret
#else
	push	%ebx
	push	%eax		# *BSD syscall
	int	$0x80
#endif
.data				# Data allocation
.align 32,0
half:	.long 0x7fffffff,0
e:	.long 0xffffffff,0x3fdfffff
rt:	.long 0xffffffff,0x3fefffff
#