diff --git a/report/report.tex b/report/report.tex index 1f84c8c..3850f50 100644 --- a/report/report.tex +++ b/report/report.tex @@ -544,6 +544,8 @@ options turned on or off, and it doesn't require to alter the base system by editing \eg{} \texttt{/usr/lib/libc-*.so}. Instead, when the \ehelf{} data is required, those files can simply be \lstc{dlopen}'d. +\todo{Talk about switch structure, considered and ignored registers, etc.} + \todo{More details here? Is it necessary or just too technical?} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -602,7 +604,26 @@ the original program size. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Space optimization} -\todo{} + +A lot of small space optimizations, such as filtering out empty FDEs, merging +together the rows that are equivalent on all the registers kept, etc.\ were +made in order to shrink the \ehelfs. + +\medskip + +The major optimization that most reduced the output size was to use a more +flexible if/else if tree implementing a binary search on the program counter +relevant intervals, instead of a huge switch. In the process, we also +\emph{outline} a lot of code, that is, find out identical code blocks, move +them outside of the if/else tree, identify them by a label, and jump to them +using a \lstc{goto}, which de-duplicates a lot of code and contributes greatly +to the shrinking. In the process, we noticed that the vast majority of FDE rows +are actually taken among very few ``common'' FDE rows. + +This makes this optimisation really efficient, as seen later in +Section~\ref{ssec:results_size}, but also makes it an interesting question --- +not investigated during this internship --- to find out whether standard DWARF +data could be efficiently compressed in this way. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -635,7 +656,7 @@ the original program size. \todo{} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subsection{Measured compactness} +\subsection{Measured compactness}\label{ssec:results_size} \todo{} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%