|
|
@@ -180,27 +180,6 @@ statements'', the rest of the block is traversed while looking for usage of the
|
|
|
\texttt{move}'s destination address \texttt{x}. These usages are replaced by
|
|
|
usages of \texttt{y}, until either \texttt{x} or \texttt{y} is re-assigned.
|
|
|
|
|
|
-%Copy propagation `unpacks' a move instruction, by replacing its destination
|
|
|
-%address with its source address in the code following the move instruction.
|
|
|
-%
|
|
|
-%This is not a direct optimization, but this does allow for a more effective
|
|
|
-%dead code elimination.
|
|
|
-%
|
|
|
-%The code of the block is traversed linearly. If a move operation is
|
|
|
-%encountered, the source and destination address of this move are stored. If a
|
|
|
-%normal operation with a source and a destination address are found, a number of
|
|
|
-%checks are performed.
|
|
|
-%
|
|
|
-%The first check is whether the destination address is stored as a destination
|
|
|
-%address of a move instruction. If so, this move instruction is no longer valid,
|
|
|
-%so the optimizations can not be done. Otherwise, continue with the second
|
|
|
-%check.
|
|
|
-%
|
|
|
-%In the second check, the source address is compared to the destination
|
|
|
-%addresses of all still valid move operations. If these are the same, in the
|
|
|
-%current operation the found source address is replaced with the source address
|
|
|
-%of the move operation.
|
|
|
-
|
|
|
An example would be the following:
|
|
|
\begin{verbatim}
|
|
|
move $regA, $regB move $regA, $regB
|
|
|
@@ -263,12 +242,15 @@ Our code is provided with this report, and is also available on GitHub: \\
|
|
|
\subsection{Structure}
|
|
|
|
|
|
The folder structure of out implementation is as follows:
|
|
|
+
|
|
|
\begin{itemize}
|
|
|
\item \texttt{.}
|
|
|
\begin{itemize}
|
|
|
\item \texttt{benchmarks/} \\
|
|
|
All benchmark files and their assembly versions (both unoptimized and
|
|
|
optimized).
|
|
|
+ \item \texttt{report/} \\
|
|
|
+ Report files.
|
|
|
\item \texttt{src/}
|
|
|
\begin{itemize}
|
|
|
\item \texttt{copy\_propagation.py} \\
|