Differences

This shows you the differences between two versions of the page.

Link to this comparison view

cpl:labs-draft:11 [2016/12/20 01:15]
bogdan.nitulescu [Exerciții de laborator (10p)]
cpl:labs-draft:11 [2016/12/20 01:58] (current)
bogdan.nitulescu [Exerciții de laborator (15p)]
Line 115: Line 115:
 <​note>​ <​note>​
 Laboratorul este compus dintr-o exerciții practice care includ analiza formei SSA și implementarea unor optimizări. Laboratorul este compus dintr-o exerciții practice care includ analiza formei SSA și implementarea unor optimizări.
-Înainte de începerea exercițiilor downloadați arhiva de {{:​cpl:​labs:​lab10.zip|aici}}.+Înainte de începerea exercițiilor downloadați arhiva de {{:​cpl:​labs:​lab11_2016.zip|aici}}.
  
 Compilati exercitiile cu -O0 pentru a nu lasa compilatorul sa aplice optimizari. Compilati exercitiile cu -O0 pentru a nu lasa compilatorul sa aplice optimizari.
Line 152: Line 152:
 ===== Exercițiul 2 ===== ===== Exercițiul 2 =====
  
-Scrieti un pass care optimizeaza cazuri de tipul jump to jump. Un caz de jump to jump avem in momentul in care singura intructiune dintr-un basic block este un salt neconditionat intr-un alt bloc. In acest caz toate insturctiunile ​de salt in blocul initial pot fi optimizate pentru a duce direct la blocul destinatie.+Scrieti un pass care optimizeaza cazuri de tipul jump to jump. Un caz de jump to jump avem in momentul in care singura intructiune dintr-un basic block este un salt neconditionat intr-un alt bloc. In acest caz toate instructiunile ​de salt din blocul initial pot fi optimizate pentru a duce direct la blocul destinatie.
 Blocul initial este in acest moment dead code si poate fi eliminat cu pass-ul de la exercitiul anterior. Blocul initial este in acest moment dead code si poate fi eliminat cu pass-ul de la exercitiul anterior.
  
Line 176: Line 176:
 ===== Exercițiul 3 ===== ===== Exercițiul 3 =====
  
-Folosind codul din fişierul ''​Hello2.cpp''​ din archiva ​laboratorului,​ urmăriţi modul în care pot fi implementată simple constant propagation în LLVM. +Folosind codul din fişierul ''​Hello.cpp''​ din arhiva ​laboratorului,​ urmăriţi modul în care pot fi implementată simple constant propagation în LLVM.
-  * cum se obţine numele unui basic block?+
   * cum poate fi identificată o instrucţiune inutilă?   * cum poate fi identificată o instrucţiune inutilă?
   * identificaţi metoda responsabilă pentru constant folding   * identificaţi metoda responsabilă pentru constant folding
   * cum se înlocuiesc apariţiile viitoare ale variabilei în cauză cu o constantă?   * cum se înlocuiesc apariţiile viitoare ale variabilei în cauză cu o constantă?
   * de ce se adaugă din nou în worklist unele instrucţiuni?​   * de ce se adaugă din nou în worklist unele instrucţiuni?​
-  * realizaţi un fişier de test (urmând paşii de la exerciţiul 1) pentru a ilustra beneficiile acestui pas. Rulaţi acest pas pe exemplul ales.+  * Rulaţi acest pas folosind fisierul ''​test.c''​ din arhiva laboratorului.
  
  
  
cpl/labs-draft/11.1482189331.txt.gz · Last modified: 2016/12/20 01:15 by bogdan.nitulescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0