Experimental: support parsing of indirect tail calls when they appear as a function...
[dyninst.git] / parseAPI / doc / 1-Intro.tex
1 \section{Introduction}
2 \label{sec:intro}
3
4 A binary code parser converts the machine code representation of a program,
5 library, or code snippet to abstractions such as the instructions, basic
6 blocks, and functions that the binary code represents. The ParseAPI is a
7 multi-platform library for creating such abstractions from binary code sources.
8 The current incarnation uses the Dyninst SymtabAPI as the default binary code
9 source; all platforms and architectures handled by the SymtabAPI are supported.
10 The ParseAPI is designed to be easily extensible to other binary code sources.
11 Support for parsing binary code in memory dumps or other formats requires only
12 implementation of a small interface as described in this document.
13
14 This API provides the user with a control flow-oriented view of a binary code
15 source. Each code object such as a program binary or library is represented as
16 a top-level collection containing the functions, basic blocks, and edges that
17 represent the control flow graph. A simple query interface is provided for
18 retrieving lower level objects like functions and basic blocks through address
19 or other attribute lookups. These objects can be used to navigate the program
20 structure as described below.