Skip to content

Commit

Permalink
impl: Add final version of the Implementation section. Fixes #60.
Browse files Browse the repository at this point in the history
  • Loading branch information
mewmew committed Apr 22, 2015
1 parent 61423f2 commit 691c3fe
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 9 deletions.
8 changes: 1 addition & 7 deletions sections/7_implementation.tex
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,7 @@
\section{Implementation}
\label{sec:implementation}

% TODO: Write meta text.

implementation strategy: iron out bugs early.

* Problem solving. Break problems into smaller subproblems and solve those individually.

foo
This section motivates the language choice of the decompilation pipeline, describes the implementation process, and provides insight into how the software artefacts evolved from the challenges that were encountered.

% === [ Subsections ] ==========================================================

Expand Down
4 changes: 2 additions & 2 deletions sections/7_implementation/2_llvm_ir_library.tex
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
\subsection{LLVM IR Library}
\label{sec:impl_llvm_ir_library}

Early on in the project it was believed that the control flow analysis stage would operate on CFGs that were tightly coupled with an in-memory representation of LLVM IR. This motivated the search for a LLVM IR library with a carefully considered API and set of data structures (objective \ref{itm:obj_ir_library}). While there existed a library which provided Go bindings for LLVM, the API of this library felt awkward to use and was too heavily influenced by the underlying C and C++ libraries; as further described in section \ref{sec:impl_go_bindings_for_llvm}. The LLVM IR library was considered a fundamental piece as the interaction with this library would influence the design and implementation of the decompilation components in critical way. For this reason it was decided that a pure Go library would be implemented for interacting with LLVM IR, even if it would involve a considerable amount of work.
Early on in the project it was believed that the control flow analysis stage would operate on CFGs that were tightly coupled with an in-memory representation of LLVM IR. This motivated the search for a LLVM IR library with a carefully considered API and set of data structures (objective \ref{itm:obj_ir_library}). While there existed a library which provided Go bindings for LLVM, the API of this library felt awkward to use and was too heavily influenced by the underlying C and C++ libraries; as further described in section \ref{sec:impl_go_bindings_for_llvm}. The interaction with the LLVM IR library would influence the design and implementation of the decompilation components in critical ways. For this reason it was decided that a pure Go library would be implemented for interacting with LLVM IR, even if it would require a considerable amount of work.

The library would be implemented by several
The first stage of the development process focused on implementing a lexer for the LLVM IR assembly language.

% TODO: Mention Fredrik Ehnbom
% benchmark delta: -18.27%. \footnote{Use binary search for keyword lexing: \url{https://github.com/llir/llvm/pull/11}}
Expand Down

0 comments on commit 691c3fe

Please sign in to comment.