Differences

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

Link to this comparison view

cpl:labs:04 [2016/10/22 17:39]
bogdan.nitulescu [Tool-uri pentru lucrul cu IR-ul]
cpl:labs:04 [2016/10/22 18:24] (current)
bogdan.nitulescu [04. Introduction to LLVM]
Line 1: Line 1:
 ===== 04. Introduction to LLVM ===== ===== 04. Introduction to LLVM =====
- 
-**TO BE UPDATED SOON** 
  
 LLVM conține o serie de biblioteci și utilitare care pot fi folosite pentru a construi compilatoare,​ interpretoare și alte tool-uri similare. Găsiți [[http://​adriansampson.net/​blog/​llvm.html|aici]] o introducere și câteva exemple interesante de utilizare a LLVM-ului. Pentru și mai multe exemple, există o [[http://​llvm.org/​ProjectsWithLLVM/​|pagină cu proiecte]] care folosesc LLVM. LLVM conține o serie de biblioteci și utilitare care pot fi folosite pentru a construi compilatoare,​ interpretoare și alte tool-uri similare. Găsiți [[http://​adriansampson.net/​blog/​llvm.html|aici]] o introducere și câteva exemple interesante de utilizare a LLVM-ului. Pentru și mai multe exemple, există o [[http://​llvm.org/​ProjectsWithLLVM/​|pagină cu proiecte]] care folosesc LLVM.
Line 47: Line 45:
  
 IR-ul de LLVM pentru fiecare funcție este organizat sub forma unui **control flow graph**, alcătuit din basic block-uri. Un **basic block** este o secvență de instrucțiuni neîntreruptă de transferuri de control. Transferurile de control se realizează prin intermediul unor instrucțiuni de tip ''​branch'',​ ''​return'',​ ''​switch''​ etc (cunoscute sub numele de ''​terminators''​). IR-ul de LLVM pentru fiecare funcție este organizat sub forma unui **control flow graph**, alcătuit din basic block-uri. Un **basic block** este o secvență de instrucțiuni neîntreruptă de transferuri de control. Transferurile de control se realizează prin intermediul unor instrucțiuni de tip ''​branch'',​ ''​return'',​ ''​switch''​ etc (cunoscute sub numele de ''​terminators''​).
 +
 +**Atenție!** In LLVM, ultima instrucțiune din fiecare basic block trebuie neapărat să fie un terminator.
  
 **Control flow graph**-ul poate fi vizualizat grafic sub forma unui fișier ''​DOT''​. Pentru obținerea fișierelor,​ se poate utiliza utilitarul ''​opt'':​ **Control flow graph**-ul poate fi vizualizat grafic sub forma unui fișier ''​DOT''​. Pentru obținerea fișierelor,​ se poate utiliza utilitarul ''​opt'':​
cpl/labs/04.1477147197.txt.gz · Last modified: 2016/10/22 17:39 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