Getting started with LLVM core libraries: get to grips with LLVM essentials and use the core libraries to build advanced tools
Gespeichert in:
Hauptverfasser: | , |
---|---|
Format: | Buch |
Sprache: | English |
Veröffentlicht: |
Birmingham [u.a.]
Packt Publ.
2014
|
Schriftenreihe: | Community experience distilled
|
Schlagworte: | |
Online-Zugang: | Inhaltsverzeichnis |
Beschreibung: | Includes index |
Beschreibung: | VI, 295 Seiten Illustrationen, Diagramme |
ISBN: | 9781782166924 |
Internformat
MARC
LEADER | 00000nam a2200000zc 4500 | ||
---|---|---|---|
001 | BV042180082 | ||
003 | DE-604 | ||
005 | 20220824 | ||
007 | t | ||
008 | 141111s2014 a||| |||| 00||| eng d | ||
020 | |a 9781782166924 |c Print |9 978-1-78216-692-4 | ||
035 | |a (OCoLC)897071881 | ||
035 | |a (DE-599)BVBBV042180082 | ||
040 | |a DE-604 |b ger |e aacr | ||
041 | 0 | |a eng | |
049 | |a DE-29T |a DE-83 |a DE-739 | ||
082 | 0 | |a 005.1 |2 23 | |
084 | |a ST 255 |0 (DE-625)143629: |2 rvk | ||
100 | 1 | |a Lopes, Bruno Cardoso |e Verfasser |0 (DE-588)1235540170 |4 aut | |
245 | 1 | 0 | |a Getting started with LLVM core libraries |b get to grips with LLVM essentials and use the core libraries to build advanced tools |c Bruno Cardoso Lopes ; Rafael Auler |
264 | 1 | |a Birmingham [u.a.] |b Packt Publ. |c 2014 | |
300 | |a VI, 295 Seiten |b Illustrationen, Diagramme | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
490 | 0 | |a Community experience distilled | |
500 | |a Includes index | ||
650 | 4 | |a Application software / Development | |
650 | 4 | |a Computer software / Development | |
650 | 0 | 7 | |a Compiler |0 (DE-588)4148248-7 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Übersetzerbau |0 (DE-588)4121803-6 |2 gnd |9 rswk-swf |
653 | |a Electronic books | ||
689 | 0 | 0 | |a Compiler |0 (DE-588)4148248-7 |D s |
689 | 0 | 1 | |a Übersetzerbau |0 (DE-588)4121803-6 |D s |
689 | 0 | |5 DE-604 | |
700 | 1 | |a Auler, Rafael |e Verfasser |0 (DE-588)1235540154 |4 aut | |
776 | 0 | 8 | |i Erscheint auch als |n Online-Ausgabe |z 978-1-78216-693-1 |
856 | 4 | 2 | |m Digitalisierung UB Passau - ADAM Catalogue Enrichment |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=027619349&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
999 | |a oai:aleph.bib-bvb.de:BVB01-027619349 |
Datensatz im Suchindex
_version_ | 1804152689684119552 |
---|---|
adam_text | Table of Contents Preface Chapter 1 : Build and Install LLVM Understanding LLVM versions Obtaining prebuilt packages Obtaining the official prebuilt binaries Using package managers Staying updated with snapshot packages Building from sources System requirements Obtaining sources SVN Git Building and installing LLVM Using the autotools-generated configure script Using CMake and Ninja Using other Unix approaches Windows and Microsoft Visual Studio Mac OS X and Xcode Summary 1 9 10 10 11 12 12 13 13 14 14 15 15 15 18 21 21 25 30 Chapter 2: External Projects Introducing Clang extras Building and installing Clang extra tools Understanding Compiler-RT Seeing Compiler-RT in action Using the DragonEgg plugin Building DragonEgg Understanding the compilation pipeline with DragonEgg and LLVM tools Understanding the LLVM test suite 31 32 33 34 34 36 37 38 39
Table of Contents Using LLDB Exercising a debug session with LLDB Introducing the libc++ standard library Summary Chapter 3: Tools and Design Introducing LLVM s basic design principles and its history Understanding LLVM today Interacting with the compiler driver Using standalone tools Delving into the LLVM internal design Getting to know LLVM s basic libraries Introducing LLVM s C++ practices Seeing polymorphism in practice Introducing C++ templates in LLVM Enforcing C++ best practices in LLVM Making string references lightweight in LLVM Demonstrating the pluggable pass interface Writing your first LLVM project 40 41 43 46 47 47 50 52 54 56 57 58 59 59 60 61 62 64 Writing the Makefile Writing the code 64 66 Navigating the LLVM source - general advice Understanding the code as a documentation Asking the community for help Coping with updates - using the SVN log as a documentation Concluding remarks Summary Chapter 4: The Frontend introducing Clang 68 68 69 69 71 72 73 73 Frontend actions Libraries 74 76 76 78 80 Using libclang Understanding Clang diagnostics Reading diagnostics Learning the frontend phases with Clang Lexical analysis Exercising lexical errors Writing libclang code that uses the lexer Preprocessing Syntactic analysis Understanding Clang AST nodes Understanding the parser actions with a debugger Exercising a parser error Writing code that traverses the Clang AST [ül 83 83 85 85 88 90 90 92 94 94
Table of Contents Serializing the AST with precompiled headers Semantic analysis Exercising a semantic error Generating the LLVM IR code Putting it together Summary Chapter 5: The LLVM Intermediate Representation Overview Understanding the LLVM IR target dependency Exercising basic tools to manipulate the IRformats Introducing the LLVM IR language syntax Introducing the LLVM IR in-memory model Writing a custom LLVM IR generator Building and running the IR generator Learning how to write code to generate any IR construct with the C++ backend Optimizing at the IR level Compile-time and link-time optimizations Discovering which passes matter Understanding pass dependencies Understanding the pass API Writing a custom pass Building and running your new pass with the LLVM build system Building and running your new pass with your own Makefile Summary Chapter 6: The Backend Overview Using the backend tools Learning the backend code structure Knowing the backend libraries Learning how to use TableGen for LLVM backends The language Knowing the code generator .td files Target properties Registers Instructions Understanding the instruction selection phase The SelectionDAG class Lowering DAG combine and legalization 97 98 99 99 100 104 105 105 107 108 109 113 114 119 119 120 120 122 124 126 127 128 130 132 133 134 135 137 138 139 140 142 142 143 144 147 148 150 151 -------------------------------------------------- [ж]---------------------------------------------------
Table of Contents DAG-to-DAG instruction selection 153 154 Pattern matching Visualizing the instruction selection process Fast instruction selection Scheduler Instruction itineraries Hazard detection Scheduling units Machine instructions Register allocation Register coalescer Virtual register rewrite Target hooks Prologue and epilogue Frame indexes Understanding the machine code framework MC instructions Code emission Writing your own machine pass Summary Chapter 7: The Just-in-Time Compiler Getting to know the LLVM JIT engine basics Introducing the execution engine Memory management Introducing the llvm::JIT framework Writing blobs to memory Using JITMemoryManager Target code emitters Target information Learning how to use the JIT class The generic value introducing the llvm::MCJIT framework The MCJIT engine Learning the module s states Understanding how MCJIT compiles modules The Object buffer, the cache, and the image Dynamic linking The memory manager The MC code emission Object finalization Using the MCJIT engine [ív] 156 157 157 158 159 159 160 161 162 166 167 168 168 169 169 170 172 175 177 178 179 180 181 181 182 183 184 185 189 190 190 190 191 192 193 193 194 195 195
Table of Contents 197 198 198 200 200 Using LLVM JIT compilation tools Using the Hi tool Using the llvm-rtdyld tool Other resources Summary Chapter 8: Cross-platform Compilation Comparing GCC and LLVM Understanding target triples Preparing your toolchain Standard C and C++ libraries Runtime libraries The assembler and the linker The Clang frontend 201 202 203 205 205 206 206 207 207 Multilib Cross-compiling with Clang command-line arguments Driver options for the target Dependencies Cross-compiling Installing GCC Potential problems 208 208 209 210 210 211 Changing the system root Generating a Clang cross-compiler Configuration options Building and installing your Clang-based cross-compiler Alternative build methods Ninja ELLCC EmbToolkit 212 213 213 214 215 215 215 216 216 216 217 217 218 Testing Development boards Simulators Additional resources Summary Chapter 9: The Clang Static Analyzer Understanding the role of a static analyzer Comparing classic warnings versus the Clang Static Analyzer The power of the symbolic execution engine Testing the static analyzer Using the driver versus using the compiler Getting to know the available checkers Using the static analyzer in the Xcode IDE [v] 219 220 220 224 226 226 227 229
Table of Contents Generating graphical reports in HTML Handling large projects A real-world example - finding bugs in Apache Extending the static analyzer with your own checkers Getting familiar with the project architecture Writing your own checker Solving the problem with a custom checker More resources Summary Chapter 10: Clang Tools with LibTooling Generating a compile command database The clang-tidy tool Using clang-tidy to check your code Refactoring tools Clang Modernizer Clang Apply Replacements ClangFormat Modularize Understanding C/C++ APIs Definitions Understanding the working of modules Using modules Understanding Modularize Using Modularize Module Map Checker PPTrace Clang Query Clang Check Remove c_str() calls Writing your own tool Problem definition - writing a C++ code refactoring tool Configuring your source code location Dissecting tooling boilerplate code Using AST matchers Composing matchers Putting the AST matcher predicates in the code Writing the callbacks Testing your new refactoring tool More resources Summary Index 230 231 232 235 235 237 238 248 248 249 249 251 252 253 253 254 256 258 258 261 262 264 264 265 265 267 269 270 270 271 271 272 276 277 279 281 283 284 284 285 [v¡]
|
any_adam_object | 1 |
author | Lopes, Bruno Cardoso Auler, Rafael |
author_GND | (DE-588)1235540170 (DE-588)1235540154 |
author_facet | Lopes, Bruno Cardoso Auler, Rafael |
author_role | aut aut |
author_sort | Lopes, Bruno Cardoso |
author_variant | b c l bc bcl r a ra |
building | Verbundindex |
bvnumber | BV042180082 |
classification_rvk | ST 255 |
ctrlnum | (OCoLC)897071881 (DE-599)BVBBV042180082 |
dewey-full | 005.1 |
dewey-hundreds | 000 - Computer science, information, general works |
dewey-ones | 005 - Computer programming, programs, data, security |
dewey-raw | 005.1 |
dewey-search | 005.1 |
dewey-sort | 15.1 |
dewey-tens | 000 - Computer science, information, general works |
discipline | Informatik |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>01836nam a2200433zc 4500</leader><controlfield tag="001">BV042180082</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20220824 </controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">141111s2014 a||| |||| 00||| eng d</controlfield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9781782166924</subfield><subfield code="c">Print</subfield><subfield code="9">978-1-78216-692-4</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)897071881</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)BVBBV042180082</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">aacr</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">eng</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-29T</subfield><subfield code="a">DE-83</subfield><subfield code="a">DE-739</subfield></datafield><datafield tag="082" ind1="0" ind2=" "><subfield code="a">005.1</subfield><subfield code="2">23</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 255</subfield><subfield code="0">(DE-625)143629:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Lopes, Bruno Cardoso</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)1235540170</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Getting started with LLVM core libraries</subfield><subfield code="b">get to grips with LLVM essentials and use the core libraries to build advanced tools</subfield><subfield code="c">Bruno Cardoso Lopes ; Rafael Auler</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Birmingham [u.a.]</subfield><subfield code="b">Packt Publ.</subfield><subfield code="c">2014</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">VI, 295 Seiten</subfield><subfield code="b">Illustrationen, Diagramme</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="490" ind1="0" ind2=" "><subfield code="a">Community experience distilled</subfield></datafield><datafield tag="500" ind1=" " ind2=" "><subfield code="a">Includes index</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Application software / Development</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Computer software / Development</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Compiler</subfield><subfield code="0">(DE-588)4148248-7</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Übersetzerbau</subfield><subfield code="0">(DE-588)4121803-6</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Electronic books</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">Compiler</subfield><subfield code="0">(DE-588)4148248-7</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2="1"><subfield code="a">Übersetzerbau</subfield><subfield code="0">(DE-588)4121803-6</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="700" ind1="1" ind2=" "><subfield code="a">Auler, Rafael</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)1235540154</subfield><subfield code="4">aut</subfield></datafield><datafield tag="776" ind1="0" ind2="8"><subfield code="i">Erscheint auch als</subfield><subfield code="n">Online-Ausgabe</subfield><subfield code="z">978-1-78216-693-1</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">Digitalisierung UB Passau - ADAM Catalogue Enrichment</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=027619349&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="999" ind1=" " ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-027619349</subfield></datafield></record></collection> |
id | DE-604.BV042180082 |
illustrated | Illustrated |
indexdate | 2024-07-10T01:14:42Z |
institution | BVB |
isbn | 9781782166924 |
language | English |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-027619349 |
oclc_num | 897071881 |
open_access_boolean | |
owner | DE-29T DE-83 DE-739 |
owner_facet | DE-29T DE-83 DE-739 |
physical | VI, 295 Seiten Illustrationen, Diagramme |
publishDate | 2014 |
publishDateSearch | 2014 |
publishDateSort | 2014 |
publisher | Packt Publ. |
record_format | marc |
series2 | Community experience distilled |
spelling | Lopes, Bruno Cardoso Verfasser (DE-588)1235540170 aut Getting started with LLVM core libraries get to grips with LLVM essentials and use the core libraries to build advanced tools Bruno Cardoso Lopes ; Rafael Auler Birmingham [u.a.] Packt Publ. 2014 VI, 295 Seiten Illustrationen, Diagramme txt rdacontent n rdamedia nc rdacarrier Community experience distilled Includes index Application software / Development Computer software / Development Compiler (DE-588)4148248-7 gnd rswk-swf Übersetzerbau (DE-588)4121803-6 gnd rswk-swf Electronic books Compiler (DE-588)4148248-7 s Übersetzerbau (DE-588)4121803-6 s DE-604 Auler, Rafael Verfasser (DE-588)1235540154 aut Erscheint auch als Online-Ausgabe 978-1-78216-693-1 Digitalisierung UB Passau - ADAM Catalogue Enrichment application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=027619349&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis |
spellingShingle | Lopes, Bruno Cardoso Auler, Rafael Getting started with LLVM core libraries get to grips with LLVM essentials and use the core libraries to build advanced tools Application software / Development Computer software / Development Compiler (DE-588)4148248-7 gnd Übersetzerbau (DE-588)4121803-6 gnd |
subject_GND | (DE-588)4148248-7 (DE-588)4121803-6 |
title | Getting started with LLVM core libraries get to grips with LLVM essentials and use the core libraries to build advanced tools |
title_auth | Getting started with LLVM core libraries get to grips with LLVM essentials and use the core libraries to build advanced tools |
title_exact_search | Getting started with LLVM core libraries get to grips with LLVM essentials and use the core libraries to build advanced tools |
title_full | Getting started with LLVM core libraries get to grips with LLVM essentials and use the core libraries to build advanced tools Bruno Cardoso Lopes ; Rafael Auler |
title_fullStr | Getting started with LLVM core libraries get to grips with LLVM essentials and use the core libraries to build advanced tools Bruno Cardoso Lopes ; Rafael Auler |
title_full_unstemmed | Getting started with LLVM core libraries get to grips with LLVM essentials and use the core libraries to build advanced tools Bruno Cardoso Lopes ; Rafael Auler |
title_short | Getting started with LLVM core libraries |
title_sort | getting started with llvm core libraries get to grips with llvm essentials and use the core libraries to build advanced tools |
title_sub | get to grips with LLVM essentials and use the core libraries to build advanced tools |
topic | Application software / Development Computer software / Development Compiler (DE-588)4148248-7 gnd Übersetzerbau (DE-588)4121803-6 gnd |
topic_facet | Application software / Development Computer software / Development Compiler Übersetzerbau |
url | http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=027619349&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT lopesbrunocardoso gettingstartedwithllvmcorelibrariesgettogripswithllvmessentialsandusethecorelibrariestobuildadvancedtools AT aulerrafael gettingstartedwithllvmcorelibrariesgettogripswithllvmessentialsandusethecorelibrariestobuildadvancedtools |