accueil

carte
-
recherche

aide

-

fft.s

-

Heptane

Static WCET Analyzer

 

 

The assembly code of the program is split in smaller parts : basic blocks. A basic block is a sequence of one or more instructions with a single entry point and a single exit point. Control transfer instructions (control transfer instructions,CT-instructions for short, are conditional and unconditional jumps, call and return instructions) are present only at the end of basic blocks. Based on the basic blocks and on syntactic information gathered during compilation, we build two logical representations of the analyzed source code: a control-flow graph and a syntax tree.



CFG 0



Basic block 0.0   

_NumberOfBitsNeeded:
0 push ebp
1 mov ebp,esp
3 sub esp,0x8
6 mov dword ptr [ebp+0xfffffffc],0x0


Basic block 0.1   

__halt2:
L2:
13 cmp dword ptr [ebp+0x8],0x1
17 je L5


Basic block 0.2   

19 jmp L3


Basic block 0.3   

L5:
__halt3:
21 mov edx,dword ptr [ebp+0x8]
24 mov eax,edx
26 shr eax,0x1
29 mov dword ptr [ebp+0x8],eax
32 mov eax,dword ptr [ebp+0xfffffffc]
35 mov dword ptr [ebp+0xfffffff8],eax


Basic block 0.4   

__halt4:
L4:
38 inc dword ptr [ebp+0xfffffffc]
41 jmp L2


Basic block 0.5   

L3:
__halt5:
__halt6:
43 mov edx,dword ptr [ebp+0xfffffff8]
46 mov eax,edx
48 jmp L1
L1:
50 mov esp,ebp
52 pop ebp
53 ret 0


Basic block 0.6   

__halt1:


CFG 1



Basic block 1.0   

_ReverseBits:
54 push ebp
55 mov ebp,esp
57 sub esp,0x8
60 mov dword ptr [ebp+0xfffffff8],0x0
67 mov dword ptr [ebp+0xfffffffc],0x0


Basic block 1.1   

__halt8:
L7:
74 mov eax,dword ptr [ebp+0xfffffffc]
77 cmp dword ptr [ebp+0xc],eax
80 ja L10


Basic block 1.2   

82 jmp L8


Basic block 1.3   

L10:
__halt9:
84 mov ecx,dword ptr [ebp+0xfffffff8]
87 mov eax,ecx
89 add eax,ecx
91 mov edx,dword ptr [ebp+0x8]
94 and edx,0x1
97 mov ecx,eax
99 or ecx,edx
101 mov dword ptr [ebp+0xfffffff8],ecx
104 shr dword ptr [ebp+0x8],0x1


Basic block 1.4   

__halt10:
L9:
108 inc dword ptr [ebp+0xfffffffc]
111 jmp L7


Basic block 1.5   

L8:
__halt11:
__halt12:
113 mov edx,dword ptr [ebp+0xfffffff8]
116 mov eax,edx
118 jmp L6
L6:
120 mov esp,ebp
122 pop ebp
123 ret 0


Basic block 1.6   

__halt7:


CFG 2



Basic block 2.0   

_fft:
124 push ebp
125 mov ebp,esp
127 sub esp,0x10124
133 push esi
134 push ebx
135 mov dword ptr [ebp+0xfffffffc],0x800
142 mov dword ptr [ebp+0xfffeff24],0x54442d18
152 mov dword ptr [ebp+0xfffeff28],0x401921fb
162 mov dword ptr [ebp+0xfffeff4c],0x0
172 mov dword ptr [ebp+0xfffeff50],0x3ff00000
182 mov dword ptr [ebp+0xfffeff54],0x0
192 mov dword ptr [ebp+0xfffeff58],0x0
202 mov dword ptr [ebp+0xfffeff5c],0xdbf8b9bb
212 mov dword ptr [ebp+0xfffeff60],0x3fe6a09e
222 mov dword ptr [ebp+0xfffeff64],0x0
232 mov dword ptr [ebp+0xfffeff68],0x3ff00000
242 mov dword ptr [ebp+0xfffeff6c],0xd66f0cfe
252 mov dword ptr [ebp+0xfffeff70],0x3fd87de0
262 mov dword ptr [ebp+0xfffeff74],0xdbf8b9bb
272 mov dword ptr [ebp+0xfffeff78],0x3fe6a09e
282 mov dword ptr [ebp+0xfffeff7c],0x88e368f1
292 mov dword ptr [ebp+0xfffeff80],0x3fc8f8b5
302 mov dword ptr [ebp+0xfffeff84],0xd66f0cfe
312 mov dword ptr [ebp+0xfffeff88],0x3fd87de0
322 mov dword ptr [ebp+0xfffeff8c],0x6173b85f
332 mov dword ptr [ebp+0xfffeff90],0x3fb917a4
342 mov dword ptr [ebp+0xfffeff94],0x88e368f1
352 mov dword ptr [ebp+0xfffeff98],0x3fc8f8b5
362 mov dword ptr [ebp+0xfffeff9c],0xde8f6cf0
372 mov dword ptr [ebp+0xfffeffa0],0x3fa91f70
382 mov dword ptr [ebp+0xfffeffa4],0x6173b85f
392 mov dword ptr [ebp+0xfffeffa8],0x3fb917a4
402 mov dword ptr [ebp+0xfffeffac],0xa1a500d6
412 mov dword ptr [ebp+0xfffeffb0],0x3f992146
422 mov dword ptr [ebp+0xfffeffb4],0xde8f6cf0
432 mov dword ptr [ebp+0xfffeffb8],0x3fa91f70
442 mov dword ptr [ebp+0xfffeffbc],0xf540895d
452 mov dword ptr [ebp+0xfffeffc0],0x3f89220f
462 mov dword ptr [ebp+0xfffeffc4],0xa1a500d6
472 mov dword ptr [ebp+0xfffeffc8],0x3f992146
482 mov dword ptr [ebp+0xfffeffcc],0xf540895d
492 mov dword ptr [ebp+0xfffeffd0],0x3f79220f
502 mov dword ptr [ebp+0xfffeffd4],0xf540895d
512 mov dword ptr [ebp+0xfffeffd8],0x3f89220f
522 mov dword ptr [ebp+0xfffeffdc],0xf540895d
532 mov dword ptr [ebp+0xfffeffe0],0x3f69220f
542 mov dword ptr [ebp+0xfffeffe4],0xf540895d
552 mov dword ptr [ebp+0xfffeffe8],0x3f79220f
562 mov dword ptr [ebp+0xfffeffec],0xf540895d
572 mov dword ptr [ebp+0xfffefff0],0x3f59220f
582 mov dword ptr [ebp+0xfffefff4],0xf540895d
592 mov dword ptr [ebp+0xfffefff8],0x3f69220f
602 mov eax,dword ptr [ebp+0xfffffffc]
605 push eax
606 call _NumberOfBitsNeeded


Basic block 2.1   

611 add esp,0x4
614 mov eax,eax
616 mov dword ptr [ebp+0xfffeff48],eax
622 mov dword ptr [ebp+0xfffeff44],0x0


Basic block 2.2   

__halt14:
L12:
632 mov eax,dword ptr [ebp+0xfffeff44]
638 cmp dword ptr [ebp+0xfffffffc],eax
641 ja L15


Basic block 2.3   

643 jmp L13


Basic block 2.4   

L15:
__halt15:
648 mov eax,dword ptr [ebp+0xfffeff48]
654 push eax
655 mov eax,dword ptr [ebp+0xfffeff44]
661 push eax
662 call _ReverseBits


Basic block 2.5   

667 add esp,0x8
670 mov eax,eax
672 mov dword ptr [ebp+0xfffeff40],eax
678 mov eax,dword ptr [ebp+0xfffeff40]
684 mov edx,eax
686 lea eax,dword ptr [edx*8+0x0]
693 lea edx,dword ptr [ebp+0xffff3ffc]
699 mov ecx,dword ptr [ebp+0xfffeff44]
705 mov ebx,ecx
707 lea ecx,dword ptr [ebx*8+0x0]
714 lea ebx,dword ptr [ebp+0xffffbffc]
720 mov esi,dword ptr [ecx+ebx*1]
723 mov dword ptr [eax+edx*1],esi
726 mov esi,dword ptr [ecx+ebx*1+0x4]
730 mov dword ptr [eax+edx*1+0x4],esi
734 mov eax,dword ptr [ebp+0xfffeff40]
740 mov edx,eax
742 lea eax,dword ptr [edx*8+0x0]
749 lea edx,dword ptr [ebp+0xfffefffc]
755 mov ecx,dword ptr [ebp+0xfffeff44]
761 mov ebx,ecx
763 lea ecx,dword ptr [ebx*8+0x0]
770 lea ebx,dword ptr [ebp+0xffff7ffc]
776 mov esi,dword ptr [ecx+ebx*1]
779 mov dword ptr [eax+edx*1],esi
782 mov esi,dword ptr [ecx+ebx*1+0x4]
786 mov dword ptr [eax+edx*1+0x4],esi


Basic block 2.6   

__halt16:
L14:
790 inc dword ptr [ebp+0xfffeff44]
796 jmp L12


Basic block 2.7   

L13:
__halt17:
__halt18:
801 mov dword ptr [ebp+0xfffeff2c],0x1
811 mov dword ptr [ebp+0xfffeff3c],0x0
821 mov dword ptr [ebp+0xfffeff30],0x2


Basic block 2.8   

__halt19:
L16:
831 mov eax,dword ptr [ebp+0xfffeff30]
837 cmp dword ptr [ebp+0xfffffffc],eax
840 jae L19


Basic block 2.9   

842 jmp L11


Basic block 2.10   

L19:
__halt20:
847 mov ecx,dword ptr [ebp+0xfffeff30]
853 mov eax,ecx
855 xor edx,edx
857 push edx
858 push eax
859 fild dword ptr [esp+1]
862 add esp,0x8
865 fld dword ptr [ebp+0xfffeff24]
871 fdivp st(1),st(0)
873 fstp dword ptr [ebp+0xfffeff1c]
879 mov eax,dword ptr [ebp+0xfffeff3c]
885 mov edx,eax
887 mov eax,edx
889 shl eax,0x4
892 lea edx,dword ptr [ebp+0xfffeff4c]
898 mov esi,dword ptr [eax+edx*1]
901 mov dword ptr [ebp+0xfffeff14],esi
907 mov esi,dword ptr [eax+edx*1+0x4]
911 mov dword ptr [ebp+0xfffeff18],esi
917 fld dword ptr [ebp+0xfffeff14]
923 fstp dword ptr [ebp+0xfffefedc]
929 fld dword ptr [ebp+0xfffefedc]
935 fadd dword ptr [ebp+0xfffefedc]
941 fld dword ptr [ebp+0xfffeff14]
947 fmulp st(1),st(0)
949 fstp dword ptr [ebp+0xfffeff14]
955 mov eax,dword ptr [ebp+0xfffeff3c]
961 mov edx,eax
963 mov eax,edx
965 shl eax,0x4
968 lea edx,dword ptr [ebp+0xfffeff4c]
974 mov esi,dword ptr [eax+edx*1+0x8]
978 mov dword ptr [ebp+0xfffeff0c],esi
984 mov esi,dword ptr [eax+edx*1+0xc]
988 mov dword ptr [ebp+0xfffeff10],esi
994 inc dword ptr [ebp+0xfffeff3c]
1000 mov dword ptr [ebp+0xfffeff44],0x0


Basic block 2.11   

__halt22:
L20:
1010 mov eax,dword ptr [ebp+0xfffeff44]
1016 cmp dword ptr [ebp+0xfffffffc],eax
1019 ja L23


Basic block 2.12   

1021 jmp L21


Basic block 2.13   

L23:
__halt23:
1026 mov dword ptr [ebp+0xfffefeec],0x0
1036 mov dword ptr [ebp+0xfffefef0],0x3ff00000
1046 mov dword ptr [ebp+0xfffefee4],0x0
1056 mov dword ptr [ebp+0xfffefee8],0x0
1066 mov eax,dword ptr [ebp+0xfffeff44]
1072 mov dword ptr [ebp+0xfffeff40],eax
1078 mov dword ptr [ebp+0xfffeff34],0x0


Basic block 2.14   

__halt25:
L24:
1088 mov eax,dword ptr [ebp+0xfffeff34]
1094 cmp dword ptr [ebp+0xfffeff2c],eax
1100 ja L27


Basic block 2.15   

1102 jmp L22


Basic block 2.16   

L27:
__halt26:
1107 mov eax,dword ptr [ebp+0xfffeff40]
1113 mov edx,dword ptr [ebp+0xfffeff2c]
1119 lea esi,dword ptr [edx+eax*1]
1122 mov dword ptr [ebp+0xfffeff38],esi
1128 mov eax,dword ptr [ebp+0xfffeff38]
1134 mov edx,eax
1136 lea eax,dword ptr [edx*8+0x0]
1143 lea edx,dword ptr [ebp+0xffff3ffc]
1149 fld dword ptr [ebp+0xfffefeec]
1155 fmul dword ptr [eax+edx*1]
1158 mov eax,dword ptr [ebp+0xfffeff38]
1164 mov edx,eax
1166 lea eax,dword ptr [edx*8+0x0]
1173 lea edx,dword ptr [ebp+0xfffefffc]
1179 fld dword ptr [ebp+0xfffefee4]
1185 fmul dword ptr [eax+edx*1]
1188 fsubrp st(1),st(0)
1190 fstp dword ptr [ebp+0xfffefefc]
1196 mov eax,dword ptr [ebp+0xfffeff38]
1202 mov edx,eax
1204 lea eax,dword ptr [edx*8+0x0]
1211 lea edx,dword ptr [ebp+0xfffefffc]
1217 fld dword ptr [ebp+0xfffefeec]
1223 fmul dword ptr [eax+edx*1]
1226 mov eax,dword ptr [ebp+0xfffeff38]
1232 mov edx,eax
1234 lea eax,dword ptr [edx*8+0x0]
1241 lea edx,dword ptr [ebp+0xffff3ffc]
1247 fld dword ptr [ebp+0xfffefee4]
1253 fmul dword ptr [eax+edx*1]
1256 faddp st(1),st(0)
1258 fstp dword ptr [ebp+0xfffefef4]
1264 mov eax,dword ptr [ebp+0xfffeff38]
1270 mov edx,eax
1272 lea eax,dword ptr [edx*8+0x0]
1279 lea edx,dword ptr [ebp+0xffff3ffc]
1285 mov ecx,dword ptr [ebp+0xfffeff40]
1291 mov ebx,ecx
1293 lea ecx,dword ptr [ebx*8+0x0]
1300 lea ebx,dword ptr [ebp+0xffff3ffc]
1306 fld dword ptr [ecx+ebx*1]
1309 fsub dword ptr [ebp+0xfffefefc]
1315 fstp dword ptr [eax+edx*1]
1318 mov eax,dword ptr [ebp+0xfffeff38]
1324 mov edx,eax
1326 lea eax,dword ptr [edx*8+0x0]
1333 lea edx,dword ptr [ebp+0xfffefffc]
1339 mov ecx,dword ptr [ebp+0xfffeff40]
1345 mov ebx,ecx
1347 lea ecx,dword ptr [ebx*8+0x0]
1354 lea ebx,dword ptr [ebp+0xfffefffc]
1360 fld dword ptr [ecx+ebx*1]
1363 fsub dword ptr [ebp+0xfffefef4]
1369 fstp dword ptr [eax+edx*1]
1372 mov eax,dword ptr [ebp+0xfffeff40]
1378 mov edx,eax
1380 lea eax,dword ptr [edx*8+0x0]
1387 lea edx,dword ptr [ebp+0xffff3ffc]
1393 mov ecx,dword ptr [ebp+0xfffeff40]
1399 mov ebx,ecx
1401 lea ecx,dword ptr [ebx*8+0x0]
1408 lea ebx,dword ptr [ebp+0xffff3ffc]
1414 fld dword ptr [ecx+ebx*1]
1417 fadd dword ptr [ebp+0xfffefefc]
1423 fstp dword ptr [eax+edx*1]
1426 mov eax,dword ptr [ebp+0xfffeff40]
1432 mov edx,eax
1434 lea eax,dword ptr [edx*8+0x0]
1441 lea edx,dword ptr [ebp+0xfffefffc]
1447 mov ecx,dword ptr [ebp+0xfffeff40]
1453 mov ebx,ecx
1455 lea ecx,dword ptr [ebx*8+0x0]
1462 lea ebx,dword ptr [ebp+0xfffefffc]
1468 fld dword ptr [ecx+ebx*1]
1471 fadd dword ptr [ebp+0xfffefef4]
1477 fstp dword ptr [eax+edx*1]
1480 fld dword ptr [ebp+0xfffeff14]
1486 fmul dword ptr [ebp+0xfffefeec]
1492 fld dword ptr [ebp+0xfffeff0c]
1498 fmul dword ptr [ebp+0xfffefee4]
1504 faddp st(1),st(0)
1506 fstp dword ptr [ebp+0xfffeff04]
1512 fld dword ptr [ebp+0xfffeff14]
1518 fmul dword ptr [ebp+0xfffefee4]
1524 fld dword ptr [ebp+0xfffeff0c]
1530 fmul dword ptr [ebp+0xfffefeec]
1536 fsubrp st(1),st(0)
1538 fld dword ptr [ebp+0xfffefee4]
1544 fsubp st(1),st(0)
1546 fstp dword ptr [ebp+0xfffefee4]
1552 fld dword ptr [ebp+0xfffefeec]
1558 fsub dword ptr [ebp+0xfffeff04]
1564 fstp dword ptr [ebp+0xfffefeec]


Basic block 2.17   

__halt27:
L26:
1570 inc dword ptr [ebp+0xfffeff40]
1576 inc dword ptr [ebp+0xfffeff34]
1582 jmp L24


Basic block 2.18   

L25:
__halt28:
__halt24:
L22:
1587 mov eax,dword ptr [ebp+0xfffeff30]
1593 add dword ptr [ebp+0xfffeff44],eax
1599 jmp L20


Basic block 2.19   

L21:
__halt29:
__halt30:
1604 mov eax,dword ptr [ebp+0xfffeff30]
1610 mov dword ptr [ebp+0xfffeff2c],eax


Basic block 2.20   

__halt21:
L18:
1616 shl dword ptr [ebp+0xfffeff30],0x1
1623 jmp L16


Basic block 2.21   

L17:
__halt31:
__halt32:
L11:
1628 lea esp,dword ptr [ebp+0xfffefed4]
1634 pop ebx
1635 pop esi
1636 mov esp,ebp
1638 pop ebp
1639 ret 0


Basic block 2.22   

__halt13:










 

 
dernière mise à jour : 02 02 2001

-- english version --- acolin@irisa.fr --- ©copyright --


accueil
 

w3c-html4