Commit 95cbd4de authored by Jayke Meijer's avatar Jayke Meijer

Added constant folding to report.

parent b53e9197
......@@ -118,7 +118,21 @@ primary concern, this is not a big problem.
\subsubsection*{Constant folding}
Another optimization is to do constant folding. Constant folding is replacing
a expensive step like addition with a more simple step like loading a constant.
Of course, this is not always possible. It is possible in cases where you apply
an operation on two constants, or a constant and a variable of which you know
for sure that it always has a certain value at that point. For example:
\begin{verbatim}
li $regA, 1 li $regA, 1
addu $regB, $regA, 2 -> li $regB, 3
\end{verbatim}
Of course, if \texttt{\$regA} is not used after this, it can be removed, which
will be done by the dead code elimination.
One problem we encountered with this is that the use of a \texttt{li} is that
the program often also stores this in the memory, so we had to check whether
this was necessary here as well.
\subsubsection*{Copy propagation}
......@@ -147,8 +161,7 @@ An example would be the following:
\begin{verbatim}
move $regA, $regB move $regA, $regB
... ...
Code not writing $regA, -> ...
$regB ...
Code not writing $regA, $regB -> ...
... ...
addu $regC, $regA, ... addu $regC, $regB, ...
\end{verbatim}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment