SlideShare une entreprise Scribd logo
1  sur  49
GCC
Marvell Taiwan
Intern Wei-Sheng Chou
1
Outline
Chapter1 - Compiler
– Complication … P3
– GCC compiler … P12
Chapter2 - GCC Source Code
– Configuration & Building … P17
– Cross Compile GCC compiler … P21
Chapter3 - Gray box probing of GCC
– Gray box probing of GCC … P29
– Passes … P33
– Gimple Optimization … P46
Reference … P57
2
Chapter1
Complication
3
Binding
conceptualizing
Programming
Compile
linking
loading
Executing
Problem
Algorithm, Data Structure, Strategy
Function, Variable, Type、Control Flow
Instruction, Register
Function addressing, library
Code, Data addressing
Value of Variable
unbind
object
time
4
5
Problem
Algorithm, Data Structure, Strategy
Function, Variable, Type、Control Flow
Instruction, Register
Function addressing, library
Code, Data addressing
Value of Variable
unbind
object
time
Binding
conceptualizing
Programming
Compile
linking
loading
Executing
Interpreter VS Compiler
Source
Program
Input
Data
6
Interpreter Machine
Develop
Flexibility
Interpreter VS Compiler
Compiler
Target
Program
Machine
Source
Program
Input
Data
7
Executing
Speed
Model
Front-End
Optimizer
Code
Generator
AST
Ind. IR
Target
Program
Front-End
Expander
Optimizer
Recognizer
AST
Register Transfer
Register Transfer
Aho Ullman
Model
Davidson
Fraser Model
Machine & Optimizer
Independent
8
Machine & Optimizer
Dependent
Structure of Compiler
Front-End
Back-End
Parser
Scanner
Semantic Analyzer
Symbol table Handler
Source
Program
Instruction
Selector
Assembly
Emitter
Register Allocator
Assembly
Program
AST
9
Typical Front-End
Parser
Scanner Semantic Analyzer
Symbol table
Handler
Source
Program
AST
Parse Tree
Error
Handler
Token
AST / IR +
Symbol Table
10
Typical Back-End
Ind.
Optimizer
Code
Generator
Register Allocator
Assembly
Program
Instruction Scheduler
Peephole Optimizer
Ind. IR
Dep. IR
AST / IR +
Symbol Table
11
Assembly
Code
Generator
Chapter1
GCC
GNU Compiler Collection
Great Compiler Challenge
12
GCC
GCC compiler
GCC
Source
Program
Target
Program
13
CC1 CPP
AS
LD LIB
compiler
assembler
linker
C Preprocessor
GCC is a collection that invokes compiler, assembler and linker…
Static
dynamic
14
Parser
Source
Program
Assembly
Program
14
Architecture
Gimplifer
TreeSSA
Optimizer
Expander Optimizer Recoginer
Input
language
Target
name
Language &
Machine
Independent
Generic Code
Machine
Dependent
Generator
Code
Machine
Descriptions
Language
Specific
Code
15
Parser
Source
Program
Assembly
Program
15
Different Time
Gimplifer
TreeSSA
Optimizer
Expander Optimizer Recoginer
Input
language
Target
name
Language &
Machine
Independent
Generic Code
Machine
Dependent
Generator
Code
Machine
Descriptions
Language
Specific
Code
Develop
GCC
Time
Build
GCC
time
Use
GCC
time
Select Copy Copy Generate Generate
16
Parser
Source
Program
Assembly
Program
16
Different View
Gimplifer
TreeSSA
Optimizer
Expander Optimizer Recoginer
Input
language
Target
name
Language &
Machine
Independent
Generic Code
Machine
Dependent
Generator
Code
Machine
Descriptions
Language
Specific
Code
C or C++? Arm or x86?
Chapter2
GCC Source Code
Configuration & Building
17
Pre-requisites
• ISO C90
• GCC
• GNU Bash
• Awk
• bzip, gzip, untar
• GNU Make
18
Mpfr library
Mpc library
Ppl
C LooG-PPL
Jar
Libelf
GMP
https://gcc.gnu.org/install/prerequisites.html
Directory
• GCC Source – source code
– $(SOURCE_D)
• GCC Build – make source code
– $(BUILD)
• GCC Install – install binary file
– $(INSTALL)
19
*GCC will generate file in build time
Step
1. Build pre-requisites
2. --prefix = /usr/local
3. ldconfig
4. Build gcc
cd $(BUILD)
$(SOURCE_D)/configure
make; make install
20
=> #create makefile
=> #install path
=> #link library
Chapter3
Gray box probing of GCC
29
What is Gray box?
30
Black Box
Input
Output
What is Gray box?
31
Black Box
Input
Output
White Box
Input
Output
Obj
Obj
Obj
Obj Obj
Obj
Obj
Obj
What is Gray box?
32
Black Box
Input
Output
White Box
Input
Output
Gray Box
Input
Output
Obj
Obj
Obj
Obj Obj
Obj
Obj
Obj Obj
Obj
Obj
Chapter3
Passes
Examining Dumps
33
Passes
34
Parse Gimplify
TreeSSA
Optimize
Generate
RTL
RTL
Optimize
Generate
ASM
Target Ind. Target dep.
Gimple Passes
RTL -> ASM
RTL Passes
Gimple -> RTL
Command
• gcc -fdump-<stage>-<passname> <file>
– ex. gcc -fdump-tree-original test.c
– ex. gcc -fdump-tree-cfg-raw test.c
– ex. gcc -fdump-ipa-all test.c
– Stage:
• tree
• ipa
• rtl
35
Important passes
36
Parse
Gimplify
Source
Program
CFG Grammer
RTL Generator
Reg Allocator
pro_epilogue
generator
Pattern Matcher
ASM
Program
AST: 003t.original
GIMPLE: 004t.gimple
CFG: 013t.cfg
RTL expand: 144r.expand
IRA: 191r.ira
198r.prologue-and-
epilogue
Command Result
37
1. gcc -fdump-tree-original-raw test.c
Examples: AST dumps
test.c
38
int a;
main()
{
a = 55;
}
test.c.004t.gimple
2. gcc -fdump-tree-gimple test.c
test.c
Examples: GIMPLE dumps
39
int main()
{
int a[3], x;
a[1] = a[2] = 10;
x = a[1] + a[2];
a[0] = a[1] + a[1]*x;
}
main ()
{
int D.1589;
int D.1590;
int D.1591;
int D.1592;
int D.1593;
int D.1594;
int a[3];
int x;
a[2] = 10;
D.1589 = a[2];
a[1] = D.1589;
D.1590 = a[1];
D.1591 = a[2];
x = D.1590 + D.1591;
D.1592 = x + 1;
D.1593 = a[1];
D.1594 = D.1592 * D.1593;
a[0] = D.1594;
}
Examples: CFG dumps
3. gcc -fdump-tree-cfg test.c
40
test.c.004t.gimple (part)
if (a<=12) goto
<D.1200>
else goto <D.1201>
<D.1200>:
D.1199 = a + b;
a = D.1199 + c;
<D.1201>:
test.c (part)
If (a<=12)
a = a+b+c;
Examples: RTL dumps
4. gcc -fdump-rtl-expand test.c
42
test.c.144r.expand (part)
test.c
int a;
main()
{
a = a+1;
}
(insn 5 4 6 3 (set (reg:SI 59 [ a.0 ])
(mem/c/i:SI (symbol_ref:DI ("a") <var_decl
0x7f13bdac3000 a>) [0 a+0 S4
A32])) test.c:4 -1
(nil))
(insn 6 5 7 3 (parallel [
(set (reg:SI 60 [ a.1 ])
(plus:SI (reg:SI 59 [ a.0 ])
(const_int 1 [0x1])))
(clobber (reg:CC 17 flags))
]) test.c:4 -1
(nil))
(insn 7 6 13 3 (set (mem/c/i:SI (symbol_ref:DI ("a")
<var_decl 0x7f13bdac3000 a>) [0 a+0 S4 A32])
(reg:SI 60 [ a.1 ])) test.c:4 -1
(nil))
43
(insn 5 4 6 3 (set (reg:SI 59 [ a.0 ])
(mem/c/i:SI (symbol_ref:DI ("a")
<var_decl 0x7f13bdac3000 a>) [0 a+0 S4
A32])) test.c:4 -1
(nil))
(insn 6 5 7 3 (parallel [
(set (reg:SI 60 [ a.1 ])
(plus:SI (reg:SI 59 [ a.0 ])
(const_int 1 [0x1])))
(clobber (reg:CC 17 flags))
]) test.c:4 -1
(nil))
(insn 7 6 13 3 (set (mem/c/i:SI
(symbol_ref:DI ("a") <var_decl
0x7f13bdac3000 a>) [0 a+0 S4 A32])
(reg:SI 60 [ a.1 ])) test.c:4 -1
(nil))
r59 = a;
r60 = r59 + 1
a = r60
44
(insn 5 4 6 3 (set (reg:SI 59 [ a.0 ])
(mem/c/i:SI (symbol_ref:DI ("a")
<var_decl 0x7f13bdac3000 a>) [0 a+0 S4
A32])) test.c:4 -1
(nil))
(insn 6 5 7 3 (parallel [
(set (reg:SI 60 [ a.1 ])
(plus:SI (reg:SI 59 [ a.0 ])
(const_int 1 [0x1])))
(clobber (reg:CC 17 flags))
]) test.c:4 -1
(nil))
(insn 7 6 13 3 (set (mem/c/i:SI
(symbol_ref:DI ("a") <var_decl
0x7f13bdac3000 a>) [0 a+0 S4 A32])
(reg:SI 60 [ a.1 ])) test.c:4 -1
(nil))
Current Inst
Previous Inst
Next Inst
CFG: Basic Block
Single Integar
Register
Integer 1
Scalar
Memory reference
Examples: Assembly dumps
5. gcc -S test.c | | objdump -d a.out
45
test.s (part)test.c
main:
.LFB0:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
movl $1, -4(%rbp)
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
int main()
{
int a;
a=1;
}
test.c.144r.expand (part)
(insn 5 4 11 3 (set (mem/c/i:SI (plus:DI (reg/f:DI
54 virtual-stack-vars)
(const_int -4 [0xfffffffffffffffc])) [0 a+0
S4 A32])
(const_int 1 [0x1])) test.c:4 -1
(nil))
Chapter3
Gimple Optimization
46
Passes
47
Parse Gimplify
TreeSSA
Optimize
Generate
RTL
RTL
Optimize
Generate
ASM
Target Ind. Target dep.
Gimple Passes
RTL -> ASM
RTL Passes
Gimple -> RTL
Brief
0. Pre-procedure (017t.ssa) (022t.copyrename1)
1. constant propagation (023t.ccp1) (059t.ccp2)
2. copy propagation (027t.copyprop1)
3. loop unrolling (058t.cunrolli)
4. dead code elimination (029t.cddce1)
Command:
gcc -fdump-tree-all -O2 test.c
48
Source Code
int main()
{
int a=1;
int b=2;
int c=3;
int n=c*2;
while (a<=n)
a = a+1;
if (a<12)
a = a+b+c;
return a;
}
49
cfg (Control Flow Graph)
50
a=1 b=2
c=3 n=c*2
B2
If a<=n
B4
If a<12
B5
If a<12
B3
D.1200 = a+b
a=D.1200+c
B6
D.1201=a
return D.1201
B7
T
T
F
F
cfg -> ssa (017t.ssa)
51
a_3=1 b_4=2
c_5=3 n_6=c_5*2
B2
a_1=phi(a_3, a_7)
If a_1<=n_6B4
If a_1<12
B5
If a_7<12
B3
D.1200_8 = a_1+b_4
a_9=D.1200_8+c_5
B6
a_2 = phi(a_1, a_9)
D.1201_10=a_2
return D.1201_10
B7
T
T
F
F
ssa -> copyrename (022t)
<bb 7>:
#a_2 = PHI<a_1(5),a_9(6)>
D.1201_10=a_2;
return D.1201_10;
<bb 7>:
#a_2 = PHI<a_1(5),a_9(6)>
a_10=a_2;
return a_10;
52
017t.ssa
022t.copyrename1
copyrename -> ccp (023t)
<bb 2>
a_3=1;
b_4=2;
c_5=3;
n_6=c_5*2;
goto <bb 4>
<bb 2>
a_3=1;
b_4=2;
c_5=3;
n_6=6;
goto <bb 4>
53
022t.copyrename1
023t.ccp1
ccp -> copyprop (027t)
<bb 7>:
#a_2 = PHI<a_1(5),a_9(6)>
a_10=a_2;
return a_10;
<bb 7>:
#a_2 = PHI<a_1(5),a_9(6)>
return a_2;
54
023t.ccp1
027t.copyprop1
copyprop -> cddc (029t)
55
029t.cddc
<bb 2>:
a_3 = 1;
b_4 = 2;
c_5 = 3;
n_6 = 6;
goto <bb 4>;
<bb 3>:
a_7 = a_1 + 1;
<bb 4>:
…
<bb 2>:
goto <bb 4>;
<bb 3>:
a_7 = a_1 + 1;
<bb 4>:
…
029t.cddc
cddc ->cunrolli (058t)
56
<bb 2>:
goto <bb 4>;
<bb 3>:
a_7 = a_1 + 1;
<bb 4>:
# a_1 = PHI <1(2), a 7(3)>
if (a_1 <= 6) goto <bb 3>;
else goto <bb 5>;
<bb 5>:
if (a_1 <= 11) goto <bb 6>;
else goto <bb 7>;
<bb 6>:
a_9 = a_1 + 5;
<bb 7>:
# a_2 = PHI <a_1(5), a_9(6)>
return a_2;
a=1
a=a+1
a=a+1
a=a+1
a=a+1
a=a+1
a=a+1
<bb 2>:
a_12 = 2;
a_14 = a_12 + 1;
a_16 = a_14 + 1;
a_18 = a_16 + 1;
a_20 = a_18 + 1;
a_22 = a_20 + 1;
if (a_22 <= 11) goto <bb 3>;
else goto <bb 4>;
<bb 3>:
a_9 = a_22 + 5;
<bb 4>:
# a_2 = PHI <a_22(2), a_9(3)>
return a_2;
029t.cddc
058t.cunrolli
cunrolli -> ccp2 (059t)
main()
{
<bb 2>:
return 12;
}
57
<bb 2>:
a_12 = 2;
a_14 = a_12 + 1;
a_16 = a_14 + 1;
a_18 = a_16 + 1;
a_20 = a_18 + 1;
a_22 = a_20 + 1;
if (a_22 <= 11) goto <bb 3>;
else goto <bb 4>;
<bb 3>:
a_9 = a_22 + 5;
<bb 4>:
# a_2 = PHI <a_22(2), a_9(3)>
return a_2;
058t.cunrolli
059t.ccp2
Reference
• GCC Source Code
– https://github.com/mirrors/gcc
• IITB GCC workshop OCW
– http://www.cse.iitb.ac.in/grc/index.php?page=
gcc-pldi14-tut
58

Contenu connexe

Tendances

Code Optimization
Code OptimizationCode Optimization
Code Optimization
guest9f8315
 
Profiling your Applications using the Linux Perf Tools
Profiling your Applications using the Linux Perf ToolsProfiling your Applications using the Linux Perf Tools
Profiling your Applications using the Linux Perf Tools
emBO_Conference
 
Linux 4.x Tracing Tools: Using BPF Superpowers
Linux 4.x Tracing Tools: Using BPF SuperpowersLinux 4.x Tracing Tools: Using BPF Superpowers
Linux 4.x Tracing Tools: Using BPF Superpowers
Brendan Gregg
 

Tendances (20)

GCC LTO
GCC LTOGCC LTO
GCC LTO
 
Advanced C - Part 1
Advanced C - Part 1 Advanced C - Part 1
Advanced C - Part 1
 
Debugging Applications with GNU Debugger
Debugging Applications with GNU DebuggerDebugging Applications with GNU Debugger
Debugging Applications with GNU Debugger
 
Q2.12: Debugging with GDB
Q2.12: Debugging with GDBQ2.12: Debugging with GDB
Q2.12: Debugging with GDB
 
Code Optimization
Code OptimizationCode Optimization
Code Optimization
 
Unix system programming
Unix system programmingUnix system programming
Unix system programming
 
LLVM Instruction Selection
LLVM Instruction SelectionLLVM Instruction Selection
LLVM Instruction Selection
 
MPI
MPIMPI
MPI
 
Linux Kernel Overview
Linux Kernel OverviewLinux Kernel Overview
Linux Kernel Overview
 
Memory management in linux
Memory management in linuxMemory management in linux
Memory management in linux
 
Profiling your Applications using the Linux Perf Tools
Profiling your Applications using the Linux Perf ToolsProfiling your Applications using the Linux Perf Tools
Profiling your Applications using the Linux Perf Tools
 
ACPI Debugging from Linux Kernel
ACPI Debugging from Linux KernelACPI Debugging from Linux Kernel
ACPI Debugging from Linux Kernel
 
Qemu JIT Code Generator and System Emulation
Qemu JIT Code Generator and System EmulationQemu JIT Code Generator and System Emulation
Qemu JIT Code Generator and System Emulation
 
Mpi
Mpi Mpi
Mpi
 
Linux Initialization Process (1)
Linux Initialization Process (1)Linux Initialization Process (1)
Linux Initialization Process (1)
 
Meet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracingMeet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracing
 
DerbyCon 2019 - Kerberoasting Revisited
DerbyCon 2019 - Kerberoasting RevisitedDerbyCon 2019 - Kerberoasting Revisited
DerbyCon 2019 - Kerberoasting Revisited
 
Linux 4.x Tracing Tools: Using BPF Superpowers
Linux 4.x Tracing Tools: Using BPF SuperpowersLinux 4.x Tracing Tools: Using BPF Superpowers
Linux 4.x Tracing Tools: Using BPF Superpowers
 
Embedded linux network device driver development
Embedded linux network device driver developmentEmbedded linux network device driver development
Embedded linux network device driver development
 
Volatile
VolatileVolatile
Volatile
 

En vedette

Importance of arab gulf location
Importance of arab gulf locationImportance of arab gulf location
Importance of arab gulf location
Usman Azhar
 
GEM - GNU C Compiler Extensions Framework
GEM - GNU C Compiler Extensions FrameworkGEM - GNU C Compiler Extensions Framework
GEM - GNU C Compiler Extensions Framework
Alexey Smirnov
 
Principles of compiler design
Principles of compiler designPrinciples of compiler design
Principles of compiler design
Janani Parthiban
 

En vedette (20)

Arabian Gulf Countries
Arabian Gulf CountriesArabian Gulf Countries
Arabian Gulf Countries
 
Gulf Cooperation Council
Gulf Cooperation CouncilGulf Cooperation Council
Gulf Cooperation Council
 
gcc
gccgcc
gcc
 
Gulf Cooperation Council (GCC)
Gulf Cooperation Council (GCC)Gulf Cooperation Council (GCC)
Gulf Cooperation Council (GCC)
 
Gulf countries Presentation
Gulf countries PresentationGulf countries Presentation
Gulf countries Presentation
 
Importance of arab gulf location
Importance of arab gulf locationImportance of arab gulf location
Importance of arab gulf location
 
Gcc power point
Gcc power pointGcc power point
Gcc power point
 
Gccgdb
GccgdbGccgdb
Gccgdb
 
MinGw Compiler
MinGw CompilerMinGw Compiler
MinGw Compiler
 
GEM - GNU C Compiler Extensions Framework
GEM - GNU C Compiler Extensions FrameworkGEM - GNU C Compiler Extensions Framework
GEM - GNU C Compiler Extensions Framework
 
NetBeans para Java, C, C++
NetBeans para Java, C, C++NetBeans para Java, C, C++
NetBeans para Java, C, C++
 
C compilation process
C compilation processC compilation process
C compilation process
 
Introduction to Perl - Day 1
Introduction to Perl - Day 1Introduction to Perl - Day 1
Introduction to Perl - Day 1
 
GNU Compiler Collection - August 2005
GNU Compiler Collection - August 2005GNU Compiler Collection - August 2005
GNU Compiler Collection - August 2005
 
Principles of compiler design
Principles of compiler designPrinciples of compiler design
Principles of compiler design
 
GCC Compiler as a Performance Testing tool for C programs
GCC Compiler as a Performance Testing tool for C programsGCC Compiler as a Performance Testing tool for C programs
GCC Compiler as a Performance Testing tool for C programs
 
Gcc opt
Gcc optGcc opt
Gcc opt
 
Compiling Under Linux
Compiling Under LinuxCompiling Under Linux
Compiling Under Linux
 
HRM - PM in GCC
HRM - PM in GCCHRM - PM in GCC
HRM - PM in GCC
 
Deep C
Deep CDeep C
Deep C
 

Similaire à GCC

Bytes in the Machine: Inside the CPython interpreter
Bytes in the Machine: Inside the CPython interpreterBytes in the Machine: Inside the CPython interpreter
Bytes in the Machine: Inside the CPython interpreter
akaptur
 
Chapter Eight(3)
Chapter Eight(3)Chapter Eight(3)
Chapter Eight(3)
bolovv
 
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
it-people
 
Sample Exam Questions on Python for revision
Sample Exam Questions on Python for revisionSample Exam Questions on Python for revision
Sample Exam Questions on Python for revision
afsheenfaiq2
 

Similaire à GCC (20)

Boosting Developer Productivity with Clang
Boosting Developer Productivity with ClangBoosting Developer Productivity with Clang
Boosting Developer Productivity with Clang
 
Big Data Day LA 2016/ Hadoop/ Spark/ Kafka track - Data Provenance Support in...
Big Data Day LA 2016/ Hadoop/ Spark/ Kafka track - Data Provenance Support in...Big Data Day LA 2016/ Hadoop/ Spark/ Kafka track - Data Provenance Support in...
Big Data Day LA 2016/ Hadoop/ Spark/ Kafka track - Data Provenance Support in...
 
Как работает LLVM бэкенд в C#. Егор Богатов ➠ CoreHard Autumn 2019
Как работает LLVM бэкенд в C#. Егор Богатов ➠ CoreHard Autumn 2019Как работает LLVM бэкенд в C#. Егор Богатов ➠ CoreHard Autumn 2019
Как работает LLVM бэкенд в C#. Егор Богатов ➠ CoreHard Autumn 2019
 
ERTS UNIT 3.ppt
ERTS UNIT 3.pptERTS UNIT 3.ppt
ERTS UNIT 3.ppt
 
Bytes in the Machine: Inside the CPython interpreter
Bytes in the Machine: Inside the CPython interpreterBytes in the Machine: Inside the CPython interpreter
Bytes in the Machine: Inside the CPython interpreter
 
Windbg랑 친해지기
Windbg랑 친해지기Windbg랑 친해지기
Windbg랑 친해지기
 
Getting started cpp full
Getting started cpp   fullGetting started cpp   full
Getting started cpp full
 
Chapter Eight(3)
Chapter Eight(3)Chapter Eight(3)
Chapter Eight(3)
 
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
 
Pragmatic Optimization in Modern Programming - Demystifying the Compiler
Pragmatic Optimization in Modern Programming - Demystifying the CompilerPragmatic Optimization in Modern Programming - Demystifying the Compiler
Pragmatic Optimization in Modern Programming - Demystifying the Compiler
 
The Nuts and Bolts of Kafka Streams---An Architectural Deep Dive
The Nuts and Bolts of Kafka Streams---An Architectural Deep DiveThe Nuts and Bolts of Kafka Streams---An Architectural Deep Dive
The Nuts and Bolts of Kafka Streams---An Architectural Deep Dive
 
不深不淺,帶你認識 LLVM (Found LLVM in your life)
不深不淺,帶你認識 LLVM (Found LLVM in your life)不深不淺,帶你認識 LLVM (Found LLVM in your life)
不深不淺,帶你認識 LLVM (Found LLVM in your life)
 
Sample Exam Questions on Python for revision
Sample Exam Questions on Python for revisionSample Exam Questions on Python for revision
Sample Exam Questions on Python for revision
 
stackconf 2022: Optimize Performance with Continuous Production Profiling
stackconf 2022: Optimize Performance with Continuous Production Profilingstackconf 2022: Optimize Performance with Continuous Production Profiling
stackconf 2022: Optimize Performance with Continuous Production Profiling
 
Code Optimization.ppt
Code Optimization.pptCode Optimization.ppt
Code Optimization.ppt
 
CS540-2-lecture11 - Copy.ppt
CS540-2-lecture11 - Copy.pptCS540-2-lecture11 - Copy.ppt
CS540-2-lecture11 - Copy.ppt
 
LSFMM 2019 BPF Observability
LSFMM 2019 BPF ObservabilityLSFMM 2019 BPF Observability
LSFMM 2019 BPF Observability
 
UNIT 2 LOOP CONTROL.pptx
UNIT 2 LOOP CONTROL.pptxUNIT 2 LOOP CONTROL.pptx
UNIT 2 LOOP CONTROL.pptx
 
Python for Scientific Computing -- Ricardo Cruz
Python for Scientific Computing -- Ricardo CruzPython for Scientific Computing -- Ricardo Cruz
Python for Scientific Computing -- Ricardo Cruz
 
design-compiler.pdf
design-compiler.pdfdesign-compiler.pdf
design-compiler.pdf
 

Plus de Kir Chou

Spime - personal assistant
Spime - personal assistantSpime - personal assistant
Spime - personal assistant
Kir Chou
 
Ch9 package & port(2013 ncu-nos_nm)
Ch9 package & port(2013 ncu-nos_nm)Ch9 package & port(2013 ncu-nos_nm)
Ch9 package & port(2013 ncu-nos_nm)
Kir Chou
 
Ch8 file system management(2013 ncu-nos_nm)
Ch8   file system management(2013 ncu-nos_nm)Ch8   file system management(2013 ncu-nos_nm)
Ch8 file system management(2013 ncu-nos_nm)
Kir Chou
 
Ch7 user management(2013 ncu-nos_nm)
Ch7   user management(2013 ncu-nos_nm)Ch7   user management(2013 ncu-nos_nm)
Ch7 user management(2013 ncu-nos_nm)
Kir Chou
 
Ch10 firewall(2013 ncu-nos_nm)
Ch10 firewall(2013 ncu-nos_nm)Ch10 firewall(2013 ncu-nos_nm)
Ch10 firewall(2013 ncu-nos_nm)
Kir Chou
 
Knowledge Management in Distributed Agile Software Development
Knowledge Management in Distributed Agile Software DevelopmentKnowledge Management in Distributed Agile Software Development
Knowledge Management in Distributed Agile Software Development
Kir Chou
 
Webapp(2014 ncucc)
Webapp(2014 ncucc)Webapp(2014 ncucc)
Webapp(2014 ncucc)
Kir Chou
 
廢除雙二一議題 保留方論點 (2013ncu全幹會)
廢除雙二一議題   保留方論點 (2013ncu全幹會)廢除雙二一議題   保留方論點 (2013ncu全幹會)
廢除雙二一議題 保留方論點 (2013ncu全幹會)
Kir Chou
 
Ch6 ssh(2013 ncu-nos_nm)
Ch6   ssh(2013 ncu-nos_nm)Ch6   ssh(2013 ncu-nos_nm)
Ch6 ssh(2013 ncu-nos_nm)
Kir Chou
 
Ch5 network basic(2013 ncu-nos_nm)
Ch5   network basic(2013 ncu-nos_nm)Ch5   network basic(2013 ncu-nos_nm)
Ch5 network basic(2013 ncu-nos_nm)
Kir Chou
 

Plus de Kir Chou (20)

Learn from LL(1) to PEG parser the hard way
Learn from LL(1) to PEG parser the hard wayLearn from LL(1) to PEG parser the hard way
Learn from LL(1) to PEG parser the hard way
 
Time travel: Let’s learn from the history of Python packaging!
Time travel: Let’s learn from the history of Python packaging!Time travel: Let’s learn from the history of Python packaging!
Time travel: Let’s learn from the history of Python packaging!
 
Python パッケージの影響を歴史から理解してみよう!
Python パッケージの影響を歴史から理解してみよう!Python パッケージの影響を歴史から理解してみよう!
Python パッケージの影響を歴史から理解してみよう!
 
The str/bytes nightmare before python2 EOL
The str/bytes nightmare before python2 EOLThe str/bytes nightmare before python2 EOL
The str/bytes nightmare before python2 EOL
 
PyCon TW 2018 - A Python Engineer Under Giant Umbrella (巨大保護傘下的 Python 碼農辛酸史)
PyCon TW 2018 - A Python Engineer Under Giant Umbrella (巨大保護傘下的 Python 碼農辛酸史) PyCon TW 2018 - A Python Engineer Under Giant Umbrella (巨大保護傘下的 Python 碼農辛酸史)
PyCon TW 2018 - A Python Engineer Under Giant Umbrella (巨大保護傘下的 Python 碼農辛酸史)
 
Introduction of CTF and CGC
Introduction of CTF and CGCIntroduction of CTF and CGC
Introduction of CTF and CGC
 
PyCon TW 2017 - Why do projects fail? Let's talk about the story of Sinon.PY
PyCon TW 2017 - Why do projects fail? Let's talk about the story of Sinon.PYPyCon TW 2017 - Why do projects fail? Let's talk about the story of Sinon.PY
PyCon TW 2017 - Why do projects fail? Let's talk about the story of Sinon.PY
 
Spime - personal assistant
Spime - personal assistantSpime - personal assistant
Spime - personal assistant
 
Ch9 package & port(2013 ncu-nos_nm)
Ch9 package & port(2013 ncu-nos_nm)Ch9 package & port(2013 ncu-nos_nm)
Ch9 package & port(2013 ncu-nos_nm)
 
Ch8 file system management(2013 ncu-nos_nm)
Ch8   file system management(2013 ncu-nos_nm)Ch8   file system management(2013 ncu-nos_nm)
Ch8 file system management(2013 ncu-nos_nm)
 
Ch7 user management(2013 ncu-nos_nm)
Ch7   user management(2013 ncu-nos_nm)Ch7   user management(2013 ncu-nos_nm)
Ch7 user management(2013 ncu-nos_nm)
 
Ch10 firewall(2013 ncu-nos_nm)
Ch10 firewall(2013 ncu-nos_nm)Ch10 firewall(2013 ncu-nos_nm)
Ch10 firewall(2013 ncu-nos_nm)
 
Knowledge Management in Distributed Agile Software Development
Knowledge Management in Distributed Agile Software DevelopmentKnowledge Management in Distributed Agile Software Development
Knowledge Management in Distributed Agile Software Development
 
Cms part2
Cms part2Cms part2
Cms part2
 
Cms part1
Cms part1Cms part1
Cms part1
 
Sitcon2014 community by server (kir)
Sitcon2014   community by server (kir)Sitcon2014   community by server (kir)
Sitcon2014 community by server (kir)
 
Webapp(2014 ncucc)
Webapp(2014 ncucc)Webapp(2014 ncucc)
Webapp(2014 ncucc)
 
廢除雙二一議題 保留方論點 (2013ncu全幹會)
廢除雙二一議題   保留方論點 (2013ncu全幹會)廢除雙二一議題   保留方論點 (2013ncu全幹會)
廢除雙二一議題 保留方論點 (2013ncu全幹會)
 
Ch6 ssh(2013 ncu-nos_nm)
Ch6   ssh(2013 ncu-nos_nm)Ch6   ssh(2013 ncu-nos_nm)
Ch6 ssh(2013 ncu-nos_nm)
 
Ch5 network basic(2013 ncu-nos_nm)
Ch5   network basic(2013 ncu-nos_nm)Ch5   network basic(2013 ncu-nos_nm)
Ch5 network basic(2013 ncu-nos_nm)
 

Dernier

Jax, FL Admin Community Group 05.14.2024 Combined Deck
Jax, FL Admin Community Group 05.14.2024 Combined DeckJax, FL Admin Community Group 05.14.2024 Combined Deck
Jax, FL Admin Community Group 05.14.2024 Combined Deck
Marc Lester
 

Dernier (20)

The Strategic Impact of Buying vs Building in Test Automation
The Strategic Impact of Buying vs Building in Test AutomationThe Strategic Impact of Buying vs Building in Test Automation
The Strategic Impact of Buying vs Building in Test Automation
 
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdf
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdfStrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdf
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdf
 
What need to be mastered as AI-Powered Java Developers
What need to be mastered as AI-Powered Java DevelopersWhat need to be mastered as AI-Powered Java Developers
What need to be mastered as AI-Powered Java Developers
 
Workshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit Milan
Workshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit MilanWorkshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit Milan
Workshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit Milan
 
architecting-ai-in-the-enterprise-apis-and-applications.pdf
architecting-ai-in-the-enterprise-apis-and-applications.pdfarchitecting-ai-in-the-enterprise-apis-and-applications.pdf
architecting-ai-in-the-enterprise-apis-and-applications.pdf
 
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
 
Food Delivery Business App Development Guide 2024
Food Delivery Business App Development Guide 2024Food Delivery Business App Development Guide 2024
Food Delivery Business App Development Guide 2024
 
Lessons Learned from Building a Serverless Notifications System.pdf
Lessons Learned from Building a Serverless Notifications System.pdfLessons Learned from Building a Serverless Notifications System.pdf
Lessons Learned from Building a Serverless Notifications System.pdf
 
AI Hackathon.pptx
AI                        Hackathon.pptxAI                        Hackathon.pptx
AI Hackathon.pptx
 
Sourcing Success - How to Find a Clothing Manufacturer
Sourcing Success - How to Find a Clothing ManufacturerSourcing Success - How to Find a Clothing Manufacturer
Sourcing Success - How to Find a Clothing Manufacturer
 
Automate your OpenSIPS config tests - OpenSIPS Summit 2024
Automate your OpenSIPS config tests - OpenSIPS Summit 2024Automate your OpenSIPS config tests - OpenSIPS Summit 2024
Automate your OpenSIPS config tests - OpenSIPS Summit 2024
 
A Guideline to Zendesk to Re:amaze Data Migration
A Guideline to Zendesk to Re:amaze Data MigrationA Guideline to Zendesk to Re:amaze Data Migration
A Guideline to Zendesk to Re:amaze Data Migration
 
Optimizing Operations by Aligning Resources with Strategic Objectives Using O...
Optimizing Operations by Aligning Resources with Strategic Objectives Using O...Optimizing Operations by Aligning Resources with Strategic Objectives Using O...
Optimizing Operations by Aligning Resources with Strategic Objectives Using O...
 
Jax, FL Admin Community Group 05.14.2024 Combined Deck
Jax, FL Admin Community Group 05.14.2024 Combined DeckJax, FL Admin Community Group 05.14.2024 Combined Deck
Jax, FL Admin Community Group 05.14.2024 Combined Deck
 
Secure Software Ecosystem Teqnation 2024
Secure Software Ecosystem Teqnation 2024Secure Software Ecosystem Teqnation 2024
Secure Software Ecosystem Teqnation 2024
 
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product UpdatesGraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
 
Crafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM IntegrationCrafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM Integration
 
5 Reasons Driving Warehouse Management Systems Demand
5 Reasons Driving Warehouse Management Systems Demand5 Reasons Driving Warehouse Management Systems Demand
5 Reasons Driving Warehouse Management Systems Demand
 
KLARNA - Language Models and Knowledge Graphs: A Systems Approach
KLARNA -  Language Models and Knowledge Graphs: A Systems ApproachKLARNA -  Language Models and Knowledge Graphs: A Systems Approach
KLARNA - Language Models and Knowledge Graphs: A Systems Approach
 
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
 

GCC