Sethi-Ullman-Algorithmus
This commit is contained in:
		
							parent
							
								
									16f83b0f0f
								
							
						
					
					
						commit
						0b075d38d7
					
				
							
								
								
									
										
											BIN
										
									
								
								verfahren.pdf
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								verfahren.pdf
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							| @ -270,6 +270,27 @@ | |||||||
| \end{itemize} | \end{itemize} | ||||||
| 
 | 
 | ||||||
| \subsubsection{Sethi-Ullman-Algorithmus} | \subsubsection{Sethi-Ullman-Algorithmus} | ||||||
|  | \begin{enumerate} | ||||||
|  | 	\item Baue DAG-Repräsentation von Befehlen, Variablen und Zwischenergebnissen auf | ||||||
|  | 	\item Wandle DAG durch Herausschneiden gemeinsamer Teilausdrücke in Wald um | ||||||
|  | 	\item Bestimme Ershov-Zahl $r$ (Anzahl der für Auswertung benötigten Register) rekursiv für jeden Teilbaum (vertausche Operanden bei kommutativen Operationen so dass möglichst viele Variablen direkt aus Speicher gelesen werden können):\\ | ||||||
|  | 	\begin{align*} | ||||||
|  | 	r(t_1\, \texttt{op}\, t_2) &= \begin{cases*} | ||||||
|  | 		r(t_1) + 1 & falls $r(t_1) = r(t_2)$\\ | ||||||
|  | 		\max(r(t_1), r(t_2)) & sonst | ||||||
|  | 	\end{cases*}\\ | ||||||
|  | 	r(v) &= \begin{cases*} | ||||||
|  | 		1 & falls linker Operand\\ | ||||||
|  | 		0 & falls rechter Operand | ||||||
|  | 	\end{cases*} | ||||||
|  | 	\end{align*} | ||||||
|  | 	\item Code-Erzeugung und Mitführung eines Stapels unbenutzter Register:\begin{enumerate} | ||||||
|  | 		\item Rekursives Traversieren des Ausdrucksbaums | ||||||
|  | 		\item Besuchen der Kinder nach absteigendem Registerbedarf | ||||||
|  | 		\item Generierung des Befehls für aktuellen Ausdruck | ||||||
|  | 	\end{enumerate} | ||||||
|  | 	\item Auftrennung des Baumes, wenn Teilbäume mehr Register als verfügbar benötigen $\rightarrow$ Teilbaum vor Auswertung des übrigen Baums im Speicher auswerten | ||||||
|  | \end{enumerate} | ||||||
| 
 | 
 | ||||||
| \subsection{Ohne Registerzuteilung} | \subsection{Ohne Registerzuteilung} | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Marco Ammon
						Marco Ammon