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
|
format ELF64
extrn printf
public main
section '.text' executable align 64
main:
push rbp
mov rbp,rsp
movdqa xmm6,dqword[denom]
movdqa xmm2,dqword[numer]
movdqa xmm3,dqword[add4]
movdqa xmm4,xmm2
movdqa xmm5,dqword[zero]
mov r12,10000000
align 64
top:
divpd xmm2,xmm6
addpd xmm5,xmm2
movdqa xmm2,xmm4
addpd xmm6,xmm3
divpd xmm2,xmm6
addpd xmm5,xmm2
movdqa xmm2,xmm4
addpd xmm6,xmm3
divpd xmm2,xmm6
addpd xmm5,xmm2
movdqa xmm2,xmm4
addpd xmm6,xmm3
divpd xmm2,xmm6
addpd xmm5,xmm2
movdqa xmm2,xmm4
addpd xmm6,xmm3
sub r12,1
jnz top
mov r12,10000000
movdqa xmm1,xmm5
movdqa xmm0,xmm6
haddpd xmm1,xmm1
mov eax,2
mov edi,msg
call printf
jmp top
leave
ret
section '.data' writable align 16
denom: dq 1.0,3.0
numer: dq 4.0,-4.0
add4: dq 4.0,4.0
zero: dq 0.0,0.0
msg db "1/%.0f - %50.48f",0xA,0
|