Commit 8d413d248e3ca82df5315ad008e91cf9d81d369f

Authored by Pierre Cwik
1 parent 05ba24ee

envoie du fichier atoq

Showing 1 changed file with 104 additions and 0 deletions   Show diff stats
answerstoquestions 0 → 100644
... ... @@ -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 +
... ...