Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Soot for dummies
Search
Leandro
August 06, 2013
0
73
Soot for dummies
Leandro
August 06, 2013
Tweet
Share
More Decks by Leandro
See All by Leandro
ACorralando EPAs: acercando el modelo mental al computacional
lleraromero
0
130
Data-flow Analysis: Reaching Definitions
lleraromero
0
48
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
82
9.1k
4 Signs Your Business is Dying
shpigford
184
22k
Raft: Consensus for Rubyists
vanstee
140
7k
How to train your dragon (web standard)
notwaldorf
94
6.1k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.8k
A Modern Web Designer's Workflow
chriscoyier
694
190k
Site-Speed That Sticks
csswizardry
10
670
Building Adaptive Systems
keathley
43
2.6k
Embracing the Ebb and Flow
colly
86
4.7k
Music & Morning Musume
bryan
46
6.6k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
Transcript
None
Soot Framework for analysis, transformation and optimization of Java programs
Support for both intra-procedural and inter-procedural Many built-in analyses and optimizations are available Provides intermediate representations of Java code Jimple, Shimple, Baf, Grimp 1 / 7
Jimple Main intermediate representation used in Soot. Key characteristics: Stackless,
typed 3-address code Simplified set of instructions Suitable for analysis and optimization 2 / 7
From Java to Jimple: Example 3 / 7
Processing of Java classes via Soot 1. Parsing Java sources
or class files into Jimple IR 2. Processing of various IRs in several phases Figura : Intra-procedural execution flow 4 / 7
Using data-flow framework A checklist of your obligations: 1. Subclass*FlowAnalysis
ForwardFlowAnalysis BackwardFlowAnalysis ForwardBranchedFlowAnalysis 2. Implement abstraction: merge(), copy() 3. Implement flow function: flowThrough() 4. Implement initial values: newInitialFlow() and entryInitialFlow() 5. Implement constructor (it must call doAnalysis()) 5 / 7
Using data-flow framework: TrulyLiveVariables 6 / 7
Soot for dummies Leandro Lera Romero 1Departamento de Computaci´ on
Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires 5 de agosto de 2013