Commit 8d413d248e3ca82df5315ad008e91cf9d81d369f
1 parent
05ba24ee
envoie du fichier atoq
Showing
1 changed file
with
104 additions
and
0 deletions
Show diff stats
... | ... | @@ -0,0 +1,104 @@ |
1 | +2.1) Chaine de compilation 1/5 | |
2 | + | |
3 | +1) les exe ont été créés et envoyés sur le depot lab | |
4 | + | |
5 | +2) il n'est pas très propre car on initialise i à 0 et ensuite à 1 | |
6 | + | |
7 | +3) pensez-vous qu'il nécessaire d'optimiser le code ? Du moins, enlever l'initialisation de i à 0 | |
8 | + | |
9 | +après optimisation la taille est diminuée | |
10 | + | |
11 | +-rw-r--r-- 1 pcwik apima3 572 Mar 18 15:27 compil1.c.011t.cfg | |
12 | +-rw-r--r-- 1 pcwik apima3 2051 Mar 18 15:27 compil1.c.011t.cfg.dot | |
13 | +-rw-r--r-- 1 pcwik apima3 309 Mar 18 15:42 compil1.c.169t.optimized | |
14 | +-rw-r--r-- 1 pcwik apima3 1605 Mar 18 15:42 compil1.c.169t.optimized.dot | |
15 | + | |
16 | + | |
17 | + | |
18 | +Chaine de compilation 2/5 | |
19 | + | |
20 | +gcc : | |
21 | + | |
22 | +@3 var_decl name: @6 type: @7 scpe: @8 | |
23 | + | |
24 | +@6 identifier_node strg: i lngt: 1 | |
25 | + | |
26 | +@11 modify_expr type: @7 op 0: @3 op 1: @28 | |
27 | +@12 modify_expr type: @7 op 0: @3 op 1: @29 | |
28 | + | |
29 | +ci-dessus les deux lignes où i est mis à 0 puis à 1 | |
30 | + | |
31 | +et avec clang : | |
32 | + | |
33 | +VarDecl 0x2c529d0 <col:1, col:5> col:5 used i 'int' | |
34 | + |-BinaryOperator 0x2c52a88 <line:7:1, col:3> 'int' '=' | |
35 | + | |-DeclRefExpr 0x2c52a40 <col:1> 'int' lvalue Var 0x2c529d0 'i' 'int' | |
36 | + | `-IntegerLiteral 0x2c52a68 <col:3> 'int' 0 | |
37 | + |-ForStmt 0x2c53d70 <line:8:1, line:4:41> | |
38 | + | |-BinaryOperator 0x2c52af8 <line:8:5, col:7> 'int' '=' | |
39 | + | | |-DeclRefExpr 0x2c52ab0 <col:5> 'int' lvalue Var 0x2c529d0 'i' 'int' | |
40 | + | | `-IntegerLiteral 0x2c52ad8 <col:7> 'int' 1 | |
41 | + | |
42 | + | |
43 | + | |
44 | + | |
45 | + Chaine de compilation 3/5 ) | |
46 | + | |
47 | +dans quel segment mémoire se trouve la variable i ? Elle se trouve dans la pile (virtual-stack-vars) | |
48 | + | |
49 | +à quelle adresse se trouve la variable i ? La variable i se trouve à l'adresse contenue dans le registre 54 moins 4 octets. | |
50 | + | |
51 | +(insn 5 4 6 3 (set (mem/c/i:SI (plus:SI (reg/f:SI 54 virtual-stack-vars) | |
52 | + (const_int -4 [0xfffffffffffffffc])) [0 i+0 S4 A32]) | |
53 | + | |
54 | + | |
55 | +listez les instructions implantant l'instruction for : | |
56 | + | |
57 | + | |
58 | +mise à 1 de i : instruction 6 | |
59 | + | |
60 | +(insn 6 5 7 3 (set (mem/c/i:SI (plus:SI (reg/f:SI 54 virtual-stack-vars) | |
61 | + (const_int -4 [0xfffffffffffffffc])) [0 i+0 S4 A32]) | |
62 | + (const_int 1 [0x1])) prog-cpp.c:5 -1 | |
63 | + (nil)) | |
64 | + | |
65 | + | |
66 | +l'incrementation de 1 : instruction 15 | |
67 | + | |
68 | +(insn 15 14 16 4 (parallel [ | |
69 | + (set (mem/c/i:SI (plus:SI (reg/f:SI 54 virtual-stack-vars) | |
70 | + (const_int -4 [0xfffffffffffffffc])) [0 i+0 S4 A32]) | |
71 | + (plus:SI (mem/c/i:SI (plus:SI (reg/f:SI 54 virtual-stack-vars) | |
72 | + (const_int -4 [0xfffffffffffffffc])) [0 i+0 S4 A32]) | |
73 | + (const_int 1 [0x1]))) | |
74 | + (clobber (reg:CC 17 flags)) | |
75 | + ]) prog-cpp.c:5 -1 | |
76 | + (nil)) | |
77 | + | |
78 | +la comparaison avec 10 : instruction 19 | |
79 | + | |
80 | +(insn 19 17 20 5 (set (reg:CCGC 17 flags) | |
81 | + (compare:CCGC (mem/c/i:SI (plus:SI (reg/f:SI 54 virtual-stack-vars) | |
82 | + (const_int -4 [0xfffffffffffffffc])) [0 i+0 S4 A32]) | |
83 | + (const_int 10 [0xa]))) prog-cpp.c:5 -1 | |
84 | + (nil)) | |
85 | + | |
86 | +le jump : instruction 20 | |
87 | + | |
88 | +(jump_insn 20 19 21 5 (set (pc) | |
89 | + (if_then_else (le (reg:CCGC 17 flags) | |
90 | + (const_int 0 [0])) | |
91 | + (label_ref 18) | |
92 | + (pc))) prog-cpp.c:5 -1 | |
93 | + (nil) | |
94 | + | |
95 | + | |
96 | +il jump à 18 que l'on retrouve au dessus | |
97 | + | |
98 | +(code_label 18 8 9 4 3 "" [1 uses]) | |
99 | + | |
100 | + | |
101 | + | |
102 | + | |
103 | + | |
104 | + | ... | ... |