2015
DOI: 10.1145/2858965.2814321
|View full text |Cite
|
Sign up to set email alerts
|

Partial evaluation of machine code

Abstract: This paper presents an algorithm for off-line partial evaluation of machine code. The algorithm follows the classical two-phase approach of binding-time analysis (BTA) followed by specialization. However, machine-code partial evaluation presents a number of new challenges, and it was necessary to devise new techniques for use in each phase.• Our BTA algorithm makes use of an instruction-rewriting method that "decouples" multiple updates performed by a single instruction. This method counters the cascading impr… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
3
1
1

Citation Types

0
20
0

Year Published

2016
2016
2020
2020

Publication Types

Select...
3
2

Relationship

4
1

Authors

Journals

citations
Cited by 5 publications
(20 citation statements)
references
References 48 publications
0
20
0
Order By: Relevance
“…By repeating steps (1), (2), and (3) on different straight-line instruction sequences in a binary, one can produce an optimized binary. Note that if one has a machine-code synthesizer for performing step (3), one can use different analyses and transformation mechanisms in step (2) to build different semantics-based binary rewriters (e.g., partial evaluators [Srinivasan and Reps 2015a], slicers , binary translators [Bansal and Aiken 2008], etc. ).…”
Section: Overview Of Mcsynth++mentioning
confidence: 99%
See 3 more Smart Citations
“…By repeating steps (1), (2), and (3) on different straight-line instruction sequences in a binary, one can produce an optimized binary. Note that if one has a machine-code synthesizer for performing step (3), one can use different analyses and transformation mechanisms in step (2) to build different semantics-based binary rewriters (e.g., partial evaluators [Srinivasan and Reps 2015a], slicers , binary translators [Bansal and Aiken 2008], etc. ).…”
Section: Overview Of Mcsynth++mentioning
confidence: 99%
“…Binary rewriting becomes particularly important if one wishes to modify the functionality of a binary that lacks source code and/or the compiler toolchain used to build the binary. Binary rewriting can be done for purposes of software reuse (e.g., slicing , partial evaluation [Srinivasan and Reps 2015a], binary translation [Bansal and Aiken 2008]), optimization (e.g., superoptimization [Bansal and Aiken 2006]), and software security (e.g., binary hardening [Abadi et al 2005;Erlingsson and Schneider 1999;Slowinska et al 2012]).…”
Section: Introductionmentioning
confidence: 99%
See 2 more Smart Citations
“…• convert instructions in the binary to QFBV formulas, • use analysis results to transform QFBV formulas, and • use MCSYNTH to produce an instruction sequence that implements each transformed formula. Examples of semantics-based binary rewriters that can be created using the above recipe include offline optimizers, partial evaluators [25], slicers [27], and binary translators [5]. For example, the machine-code partial evaluator WIPER [25] specializes the QFBV formulas of instructions with respect to a static partial state, and uses MCSYNTH to produce residual instructions from the specialized formulas.…”
Section: Machine-code Synthesis Using Mcsynthmentioning
confidence: 99%