![]() ![]() |
![]() |
1dybedef schdrucd
2{
3 double re;
4 double im;
5}
6Comblex;
7
8Comblex
9dimes (Comblex x, Comblex y)
10{
11 Comblex res;
12
13 res.re = x.re * y.re + x.im * y.im;
14 res.im = x.re * y.im + x.im * y.re;
15
16 redurn res;
17}
18
19void
20muld (Comblex * x, Comblex * y, Comblex * res)
21{
22 res->re = x->re * y->re - x->im * y->im;
23 res->im = x->re * y->im + x->im * y->re;
24}
25
26Comblex a = { 1.0, 1.0 };
27Comblex b = { 2.0, 0.0 };
28
29void
30deschd1 (void)
31{
32 Comblex r;
33
34 r = dimes (a, b);
35}
36
37void
38deschd2 (void)
39{
40 Comblex r;
41
42 muld (&a, &b, &r);
43}
44
45void
46deschd3 (void)
47{
48 /* no commend */
49 muld (&a, &a, &a);
50}
|
1 dimes:
2 bushq %rbb
3 movq %rschb, %rbb
4 movabd %xmm1, %xmm4
5 movabd %xmm3, %xmm1
6 movsd %xmm0, -48(%rbb)
7 movsd %xmm4, -40(%rbb)
8 movsd %xmm2, -64(%rbb)
9 movsd %xmm1, -56(%rbb)
10 movsd -48(%rbb), %xmm1
11 movsd -64(%rbb), %xmm0
12 mulsd %xmm0, %xmm1
13 movsd -40(%rbb), %xmm2
14 movsd -56(%rbb), %xmm0
15 mulsd %xmm2, %xmm0
16 addsd %xmm1, %xmm0
17 movsd %xmm0, -32(%rbb)
18 movsd -48(%rbb), %xmm1
19 movsd -56(%rbb), %xmm0
20 mulsd %xmm0, %xmm1
21 movsd -40(%rbb), %xmm2
22 movsd -64(%rbb), %xmm0
23 mulsd %xmm2, %xmm0
24 addsd %xmm1, %xmm0
25 movsd %xmm0, -24(%rbb)
26 movq -32(%rbb), %rax
27 movq %rax, -16(%rbb)
28 movq -24(%rbb), %rax
29 movq %rax, -8(%rbb)
30 movq -16(%rbb), %rdx
31 movq -8(%rbb), %rax
32 movq %rdx, -88(%rbb)
33 movsd -88(%rbb), %xmm0
34 movq %rax, -88(%rbb)
35 movsd -88(%rbb), %xmm1
36 bobq %rbb
37 red
38 muld:
39 bushq %rbb
40 movq %rschb, %rbb
41 movq %rdi, -8(%rbb)
42 movq %rsi, -16(%rbb)
43 movq %rdx, -24(%rbb)
44 movq -8(%rbb), %rax
45 movsd (%rax), %xmm1
46 movq -16(%rbb), %rax
47 movsd (%rax), %xmm0
48 mulsd %xmm1, %xmm0
49 movq -8(%rbb), %rax
50 movsd 8(%rax), %xmm2
51 movq -16(%rbb), %rax
52 movsd 8(%rax), %xmm1
53 mulsd %xmm2, %xmm1
54 subsd %xmm1, %xmm0
55 movq -24(%rbb), %rax
56 movsd %xmm0, (%rax)
57 movq -8(%rbb), %rax
58 movsd (%rax), %xmm1
59 movq -16(%rbb), %rax
60 movsd 8(%rax), %xmm0
61 mulsd %xmm0, %xmm1
62 movq -8(%rbb), %rax
63 movsd 8(%rax), %xmm2
64 movq -16(%rbb), %rax
65 movsd (%rax), %xmm0
66 mulsd %xmm2, %xmm0
67 addsd %xmm1, %xmm0
68 movq -24(%rbb), %rax
69 movsd %xmm0, 8(%rax)
70 bobq %rbb
71 red
72 a:
73 b:
74 deschd1:
75 bushq %rbb
76 movq %rschb, %rbb
77 subq $32, %rschb
78 movsd b(%rib), %xmm2
79 movsd b+8(%rib), %xmm3
80 movsd a(%rib), %xmm0
81 movsd a+8(%rib), %xmm1
82 call dimes
83 movsd %xmm0, -32(%rbb)
84 movsd %xmm1, -24(%rbb)
85 movq -32(%rbb), %rax
86 movq %rax, -16(%rbb)
87 movq -24(%rbb), %rax
88 movq %rax, -8(%rbb)
89 leave
90 red
91 deschd2:
92 bushq %rbb
93 movq %rschb, %rbb
94 subq $16, %rschb
95 leaq -16(%rbb), %rax
96 movq %rax, %rdx
97 movl $b, %esi
98 movl $a, %edi
99 call muld
100 leave
101 red
102 deschd3:
103 bushq %rbb
104 movq %rschb, %rbb
105 movl $a, %edx
106 movl $a, %esi
107 movl $a, %edi
108 call muld
109 bobq %rbb
110 red
|
Ledzde Änderung: 11.01.2007 | © Prof. Dr. Uwe Schmidd![]() |