Learn LLVM 12: a beginner's guide to learning LLVM compiler tools and core libraries with C++
Gespeichert in:
1. Verfasser: | |
---|---|
Format: | Buch |
Sprache: | English |
Veröffentlicht: |
Birmingham ; Mumbai
Packt Publishing Ltd
2021
|
Ausgabe: | First published |
Schlagworte: | |
Online-Zugang: | Inhaltsverzeichnis |
Beschreibung: | xi, 372 Seiten Illustrationen, Diagramme |
ISBN: | 9781839213502 |
Internformat
MARC
LEADER | 00000nam a2200000 c 4500 | ||
---|---|---|---|
001 | BV048384001 | ||
003 | DE-604 | ||
005 | 20220824 | ||
007 | t | ||
008 | 220801s2021 xxka||| |||| 00||| eng d | ||
020 | |a 9781839213502 |c pbk. : (£33.99) |9 978-1-83921-350-2 | ||
035 | |a (OCoLC)1295794708 | ||
035 | |a (DE-599)KXP1788882873 | ||
040 | |a DE-604 |b ger |e rda | ||
041 | 0 | |a eng | |
044 | |a xxk |c XA-GB | ||
049 | |a DE-739 | ||
082 | 0 | |a 005.453 | |
084 | |a ST 255 |0 (DE-625)143629: |2 rvk | ||
100 | 1 | |a Nacke, Kai |d ca. 20./21. Jh. |e Verfasser |0 (DE-588)1266259287 |4 aut | |
245 | 1 | 0 | |a Learn LLVM 12 |b a beginner's guide to learning LLVM compiler tools and core libraries with C++ |c Kai Nacke |
250 | |a First published | ||
264 | 1 | |a Birmingham ; Mumbai |b Packt Publishing Ltd |c 2021 | |
300 | |a xi, 372 Seiten |b Illustrationen, Diagramme | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
610 | 2 | 7 | |a Compiler |0 (DE-588)1065285353 |2 gnd |9 rswk-swf |
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 | 0 | |a Compilers (Computer programs) | |
653 | 0 | |a C++ (Computer program language) | |
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 | |
689 | 1 | 0 | |a Compiler |0 (DE-588)1065285353 |D b |
689 | 1 | 1 | |a Übersetzerbau |0 (DE-588)4121803-6 |D s |
689 | 1 | |5 DE-604 | |
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=033762801&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
999 | |a oai:aleph.bib-bvb.de:BVB01-033762801 |
Datensatz im Suchindex
_version_ | 1804184266766024704 |
---|---|
adam_text | Table of Contents Preface Section 1 - The Basics of Compiler Construction with LLVM 1 Installing LLVM Getting the prerequisites ready 4 Ubuntu Fedora and RedHat FreeBSD OSX Windows Configuring Git 5 5 5 6 6 6 Building with CMake 7 Cloning the repository Creating a build directory Generating the build system files 7 8 8 Customizing the build process 10 Variables defined by CMake Variables defined by LLVM 11 Io Summary 15 Layout of an LLVM project Creating your own project using LLVM libraries 20 Creating the directory structure Adding the CMake files Adding the C++ source files Compiling the tinylang application 23 24 30 32 2 Touring the LLVM Source Technical requirements Contents of the LLVM mono repository 18 LLVM core libraries and additions Compilers and tools Runtime libraries 18 19 20 18 23
ii Table of Contents Targeting a different CPU architecture Summary 39 42 42 A handwritten parser The abstract syntax tree 51 58 43 Semantic analysis Generating code with the LLVM backend 61 Textual representation of the LLVM IR Generating the IR from the AST The missing pieces - the driver and the runtime library 64 66 Summary 74 35 3 The Structure of a Compiler Technical requirements Building blocks of a compiler An arithmetic expression language Formalism for specifying the syntax of a programming language 43 How grammar helps the compiler writer 44 Lexical analysis 45 A handwritten lexer 45 Syntactical analysis 50 64 71 Section 2 ֊ From Source to Machine Code Generation 4 Turning the Source File into an Abstract Syntax Tree Technical requirements Defining a real programming language Creating the project layout Managing source files and user messages Structuring the lexer 78 78 81 82 86 Constructing a recursive descent parser Generating a parser and lexer with bison and flex Performing semantic analysis Handling the scope of names Using LLVM-style RTTI for the AST Creating the semantic analyzer Summary 93 97 101 101 105 106 114
Table of Contents iii Basics of IR Code Generation Technical requirements Generating IR from the AST Understanding the IR code Knowing the load-and-store approach Mapping the control flow to basic blocks Using AST numbering to generate IR code in SSA form Defining the data structure to hold values Reading and writing values local to a basic block Searching the predecessor blocks for a value Optimizing the generated phi instructions Sealing a block 116 116 116 120 121 123 124 124 125 127 129 Creating IR code for expressions Emitting the IR code for a function Controlling visibility with linkage and name mangling Converting types from an AST description to LLVM types Creating the LLVM IR function Emitting the function body Setting up the module and the driver Wrapping everything in the code generator Initializing the target machine class Emitting assembler text and object code Summary 129 131 131 132 133 135 137 137 138 140 144 IR Generation for High-Level Language Constructs Technical requirements Working with arrays, structs, and pointers Getting the application binary interface right Creating IR code for classes 146 146 150 and virtual functions 152 Implementing single inheritance 152 Extending single inheritance with interfaces 156 Adding support for multiple inheritance 158 Summary 160 Th rowi ng a nd catch i ng exceptions 162 Advanced IR Generation Technical requirements 162
iv Table of Contents Raising an exception Catching an exception integrating the exception-handling code into the application Generating metadata for type-based alias analysis Understanding the need for additional metadata 169 172 Adding TBAA metadata to tinylang 175 Understanding the general structure of debug metadata Tracking variables and their values Adding line numbers Adding debug support to tinylang 176 176 Adding debug metadata Summary 179 184 184 188 192 192 200 8 Optimizing IR Technical requirements Introducing the LLVM Pass manager Implementing a Pass using the new Pass manager 202 202 204 Adding a Pass to the LLVM source tree 204 Adding a new Pass as a plugin 208 Adapting a Pass for use with the old Pass manager 213 Adding an optimization pipeline to your compiler 216 Creating an optimization pipeline with the new Pass manager 216 Extending the Pass pipeline 223 Summary 226 Section 3 - Taking LLVM to the Next Level 9 Instruction Selection Technical requirements 230 Understanding the LLVM target backend structure 230 Using MIR to testând debug the backend 231 How instruction selection works235 Specifying the target description in the TableGen language 235 Instruction selection with the selection DAG Fast instruction selection - FastlSel The new global instruction selection - Globalise! 240 248 249 Supporting new machine instructions 251 Adding a new instruction to the assembler and code generation 251
Table of Contents v Testing the new instruction 255 Summary 258 10 JIT Compilation 260 Technical requirements Getting an overview of LLVM s JIT implementation 260 and use cases UsingJIT compilation for direct 262 execution Exploring the Hi tool Implementing our own JIT compiler with LLJIT Building a JIT compiler class from scratch Utilizing a JIT compiler for code evaluation Identifying the language semantics 264 271 281 283 262 Summary 284 11 Debugging Using LLVM Tools Technical requirements Instrumenting an application with sanitizers Detecting memory access problems with the address sanitizer Finding uninitialized memory access with the memory sanitizer Pointing out data races with the thread sanitizer Finding bugs with libFuzzer Limitations and alternatives 286 286 286 289 290 292 Performance profiling with XRay Checking the source with the Clang Static Analyzer Adding a new checker to the Clang Static Analyzer Creating your own Clang-based tool Summary 296 301 305 314 322 296 12 Create Your Own Backend Technical requirements Setting the stage for a new backend Adding the new architecture to the Triple class 324 324 Extending the ELF file format definition in LLVM 326 Creating the target description 328 325 Implementing the top-level file of the target description 328
vi Table of Contents Adding the register definition Defining the calling convention Creating the scheduling model Defining the instruction formats and the instruction information Implementing the DAG Instruction selection classes Initializing the target machine Adding the selection DAG 330 331 332 333 336 337 Other Books You May Enjoy Index implementation Supporting target-specific operations Configuring the target lowering Generating assembler instructions Emitting machine code Adding support for disassembling Piecing it all together Summary 339 340 344 347 350 353 357 360
|
adam_txt |
Table of Contents Preface Section 1 - The Basics of Compiler Construction with LLVM 1 Installing LLVM Getting the prerequisites ready 4 Ubuntu Fedora and RedHat FreeBSD OSX Windows Configuring Git 5 5 5 6 6 6 Building with CMake 7 Cloning the repository Creating a build directory Generating the build system files 7 8 8 Customizing the build process 10 Variables defined by CMake Variables defined by LLVM 11 Io Summary 15 Layout of an LLVM project Creating your own project using LLVM libraries 20 Creating the directory structure Adding the CMake files Adding the C++ source files Compiling the tinylang application 23 24 30 32 2 Touring the LLVM Source Technical requirements Contents of the LLVM mono repository 18 LLVM core libraries and additions Compilers and tools Runtime libraries 18 19 20 18 23
ii Table of Contents Targeting a different CPU architecture Summary 39 42 42 A handwritten parser The abstract syntax tree 51 58 43 Semantic analysis Generating code with the LLVM backend 61 Textual representation of the LLVM IR Generating the IR from the AST The missing pieces - the driver and the runtime library 64 66 Summary 74 35 3 The Structure of a Compiler Technical requirements Building blocks of a compiler An arithmetic expression language Formalism for specifying the syntax of a programming language 43 How grammar helps the compiler writer 44 Lexical analysis 45 A handwritten lexer 45 Syntactical analysis 50 64 71 Section 2 ֊ From Source to Machine Code Generation 4 Turning the Source File into an Abstract Syntax Tree Technical requirements Defining a real programming language Creating the project layout Managing source files and user messages Structuring the lexer 78 78 81 82 86 Constructing a recursive descent parser Generating a parser and lexer with bison and flex Performing semantic analysis Handling the scope of names Using LLVM-style RTTI for the AST Creating the semantic analyzer Summary 93 97 101 101 105 106 114
Table of Contents iii Basics of IR Code Generation Technical requirements Generating IR from the AST Understanding the IR code Knowing the load-and-store approach Mapping the control flow to basic blocks Using AST numbering to generate IR code in SSA form Defining the data structure to hold values Reading and writing values local to a basic block Searching the predecessor blocks for a value Optimizing the generated phi instructions Sealing a block 116 116 116 120 121 123 124 124 125 127 129 Creating IR code for expressions Emitting the IR code for a function Controlling visibility with linkage and name mangling Converting types from an AST description to LLVM types Creating the LLVM IR function Emitting the function body Setting up the module and the driver Wrapping everything in the code generator Initializing the target machine class Emitting assembler text and object code Summary 129 131 131 132 133 135 137 137 138 140 144 IR Generation for High-Level Language Constructs Technical requirements Working with arrays, structs, and pointers Getting the application binary interface right Creating IR code for classes 146 146 150 and virtual functions 152 Implementing single inheritance 152 Extending single inheritance with interfaces 156 Adding support for multiple inheritance 158 Summary 160 Th rowi ng a nd catch i ng exceptions 162 Advanced IR Generation Technical requirements 162
iv Table of Contents Raising an exception Catching an exception integrating the exception-handling code into the application Generating metadata for type-based alias analysis Understanding the need for additional metadata 169 172 Adding TBAA metadata to tinylang 175 Understanding the general structure of debug metadata Tracking variables and their values Adding line numbers Adding debug support to tinylang 176 176 Adding debug metadata Summary 179 184 184 188 192 192 200 8 Optimizing IR Technical requirements Introducing the LLVM Pass manager Implementing a Pass using the new Pass manager 202 202 204 Adding a Pass to the LLVM source tree 204 Adding a new Pass as a plugin 208 Adapting a Pass for use with the old Pass manager 213 Adding an optimization pipeline to your compiler 216 Creating an optimization pipeline with the new Pass manager 216 Extending the Pass pipeline 223 Summary 226 Section 3 - Taking LLVM to the Next Level 9 Instruction Selection Technical requirements 230 Understanding the LLVM target backend structure 230 Using MIR to testând debug the backend 231 How instruction selection works235 Specifying the target description in the TableGen language 235 Instruction selection with the selection DAG Fast instruction selection - FastlSel The new global instruction selection - Globalise! 240 248 249 Supporting new machine instructions 251 Adding a new instruction to the assembler and code generation 251
Table of Contents v Testing the new instruction 255 Summary 258 10 JIT Compilation 260 Technical requirements Getting an overview of LLVM's JIT implementation 260 and use cases UsingJIT compilation for direct 262 execution Exploring the Hi tool Implementing our own JIT compiler with LLJIT Building a JIT compiler class from scratch Utilizing a JIT compiler for code evaluation Identifying the language semantics 264 271 281 283 262 Summary 284 11 Debugging Using LLVM Tools Technical requirements Instrumenting an application with sanitizers Detecting memory access problems with the address sanitizer Finding uninitialized memory access with the memory sanitizer Pointing out data races with the thread sanitizer Finding bugs with libFuzzer Limitations and alternatives 286 286 286 289 290 292 Performance profiling with XRay Checking the source with the Clang Static Analyzer Adding a new checker to the Clang Static Analyzer Creating your own Clang-based tool Summary 296 301 305 314 322 296 12 Create Your Own Backend Technical requirements Setting the stage for a new backend Adding the new architecture to the Triple class 324 324 Extending the ELF file format definition in LLVM 326 Creating the target description 328 325 Implementing the top-level file of the target description 328
vi Table of Contents Adding the register definition Defining the calling convention Creating the scheduling model Defining the instruction formats and the instruction information Implementing the DAG Instruction selection classes Initializing the target machine Adding the selection DAG 330 331 332 333 336 337 Other Books You May Enjoy Index implementation Supporting target-specific operations Configuring the target lowering Generating assembler instructions Emitting machine code Adding support for disassembling Piecing it all together Summary 339 340 344 347 350 353 357 360 |
any_adam_object | 1 |
any_adam_object_boolean | 1 |
author | Nacke, Kai ca. 20./21. Jh |
author_GND | (DE-588)1266259287 |
author_facet | Nacke, Kai ca. 20./21. Jh |
author_role | aut |
author_sort | Nacke, Kai ca. 20./21. Jh |
author_variant | k n kn |
building | Verbundindex |
bvnumber | BV048384001 |
classification_rvk | ST 255 |
ctrlnum | (OCoLC)1295794708 (DE-599)KXP1788882873 |
dewey-full | 005.453 |
dewey-hundreds | 000 - Computer science, information, general works |
dewey-ones | 005 - Computer programming, programs, data, security |
dewey-raw | 005.453 |
dewey-search | 005.453 |
dewey-sort | 15.453 |
dewey-tens | 000 - Computer science, information, general works |
discipline | Informatik |
discipline_str_mv | Informatik |
edition | First published |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>01780nam a2200445 c 4500</leader><controlfield tag="001">BV048384001</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20220824 </controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">220801s2021 xxka||| |||| 00||| eng d</controlfield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9781839213502</subfield><subfield code="c">pbk. : (£33.99)</subfield><subfield code="9">978-1-83921-350-2</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)1295794708</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)KXP1788882873</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">rda</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">eng</subfield></datafield><datafield tag="044" ind1=" " ind2=" "><subfield code="a">xxk</subfield><subfield code="c">XA-GB</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-739</subfield></datafield><datafield tag="082" ind1="0" ind2=" "><subfield code="a">005.453</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">Nacke, Kai</subfield><subfield code="d">ca. 20./21. Jh.</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)1266259287</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Learn LLVM 12</subfield><subfield code="b">a beginner's guide to learning LLVM compiler tools and core libraries with C++</subfield><subfield code="c">Kai Nacke</subfield></datafield><datafield tag="250" ind1=" " ind2=" "><subfield code="a">First published</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Birmingham ; Mumbai</subfield><subfield code="b">Packt Publishing Ltd</subfield><subfield code="c">2021</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">xi, 372 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="610" ind1="2" ind2="7"><subfield code="a">Compiler</subfield><subfield code="0">(DE-588)1065285353</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</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="0"><subfield code="a">Compilers (Computer programs)</subfield></datafield><datafield tag="653" ind1=" " ind2="0"><subfield code="a">C++ (Computer program language)</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="689" ind1="1" ind2="0"><subfield code="a">Compiler</subfield><subfield code="0">(DE-588)1065285353</subfield><subfield code="D">b</subfield></datafield><datafield tag="689" ind1="1" 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="1" ind2=" "><subfield code="5">DE-604</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=033762801&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-033762801</subfield></datafield></record></collection> |
id | DE-604.BV048384001 |
illustrated | Illustrated |
index_date | 2024-07-03T20:19:42Z |
indexdate | 2024-07-10T09:36:37Z |
institution | BVB |
isbn | 9781839213502 |
language | English |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-033762801 |
oclc_num | 1295794708 |
open_access_boolean | |
owner | DE-739 |
owner_facet | DE-739 |
physical | xi, 372 Seiten Illustrationen, Diagramme |
publishDate | 2021 |
publishDateSearch | 2021 |
publishDateSort | 2021 |
publisher | Packt Publishing Ltd |
record_format | marc |
spelling | Nacke, Kai ca. 20./21. Jh. Verfasser (DE-588)1266259287 aut Learn LLVM 12 a beginner's guide to learning LLVM compiler tools and core libraries with C++ Kai Nacke First published Birmingham ; Mumbai Packt Publishing Ltd 2021 xi, 372 Seiten Illustrationen, Diagramme txt rdacontent n rdamedia nc rdacarrier Compiler (DE-588)1065285353 gnd rswk-swf Compiler (DE-588)4148248-7 gnd rswk-swf Übersetzerbau (DE-588)4121803-6 gnd rswk-swf Compilers (Computer programs) C++ (Computer program language) Compiler (DE-588)4148248-7 s Übersetzerbau (DE-588)4121803-6 s DE-604 Compiler (DE-588)1065285353 b 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=033762801&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis |
spellingShingle | Nacke, Kai ca. 20./21. Jh Learn LLVM 12 a beginner's guide to learning LLVM compiler tools and core libraries with C++ Compiler (DE-588)1065285353 gnd Compiler (DE-588)4148248-7 gnd Übersetzerbau (DE-588)4121803-6 gnd |
subject_GND | (DE-588)1065285353 (DE-588)4148248-7 (DE-588)4121803-6 |
title | Learn LLVM 12 a beginner's guide to learning LLVM compiler tools and core libraries with C++ |
title_auth | Learn LLVM 12 a beginner's guide to learning LLVM compiler tools and core libraries with C++ |
title_exact_search | Learn LLVM 12 a beginner's guide to learning LLVM compiler tools and core libraries with C++ |
title_exact_search_txtP | Learn LLVM 12 a beginner's guide to learning LLVM compiler tools and core libraries with C++ |
title_full | Learn LLVM 12 a beginner's guide to learning LLVM compiler tools and core libraries with C++ Kai Nacke |
title_fullStr | Learn LLVM 12 a beginner's guide to learning LLVM compiler tools and core libraries with C++ Kai Nacke |
title_full_unstemmed | Learn LLVM 12 a beginner's guide to learning LLVM compiler tools and core libraries with C++ Kai Nacke |
title_short | Learn LLVM 12 |
title_sort | learn llvm 12 a beginner s guide to learning llvm compiler tools and core libraries with c |
title_sub | a beginner's guide to learning LLVM compiler tools and core libraries with C++ |
topic | Compiler (DE-588)1065285353 gnd Compiler (DE-588)4148248-7 gnd Übersetzerbau (DE-588)4121803-6 gnd |
topic_facet | Compiler Übersetzerbau |
url | http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=033762801&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT nackekai learnllvm12abeginnersguidetolearningllvmcompilertoolsandcorelibrarieswithc |