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
43
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
120
Data-flow Analysis: Reaching Definitions
lleraromero
0
38
Featured
See All Featured
Robots, Beer and Maslow
schacon
PRO
155
7.9k
Rebuilding a faster, lazier Slack
samanthasiow
74
8.2k
The Invisible Side of Design
smashingmag
294
49k
The Power of CSS Pseudo Elements
geoffreycrofte
62
5k
Automating Front-end Workflow
addyosmani
1357
200k
Principles of Awesome APIs and How to Build Them.
keavy
121
16k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
14
8.3k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
275
13k
The Invisible Customer
myddelton
114
12k
Why Our Code Smells
bkeepers
PRO
331
56k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
34
8.9k
Building Flexible Design Systems
yeseniaperezcruz
320
37k
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