Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
software:deep:dev:crosscompiler:backend_ppc:exceptions [2012-03-29 15:13] – Externe Bearbeitung 127.0.0.1software:deep:dev:crosscompiler:backend_ppc:exceptions [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1
Zeile 1: Zeile 1:
-====== Exceptions ====== 
-===== Terminologie ===== 
-  * PPCExceptions: Prozessorspezifische Ausnahmen 
-  * Interrupt: spezielle Exception, durch externe Hardware ausgelöste asynchrone Exception 
-  * Java Exception Modell: Alle Ausnahmen in Java sind von der Klasse Throwable abgeleitet. Die Klasse Exception teilt sich wiederum in IO Exceptions und Runtime Exceptions auf. 
  
-[{{ .:ppcexception.png?550&direct |//PPC Exceptions und Interrupts//}}] 
- 
-===== Anforderungen an PPCExceptions ===== 
-Code Generator muss ein spezielles Stackframe erzeugen und die Methode mit der Instruktion „rfi“ abschliessen. 
-Die Reset Exception darf keinen Prolog aufweisen. 
-Die action-Methoden der abgeleiteten Klassen werden über einen speziellen Tag im Konfigurationsfile an absolute Adressen gelinkt. 
-Es werden keine Instanzen dieser Klassen erzeugt -> Objektkonstruktoren weglassen 
- 
-===== Floats in Exceptions ===== 
-Mit US.ENABLE_FLOATS werden alle volatile FPR's gespeichert und das FP-Enable Bit im MSR gesetzt. Die nonvolatile FPR, die in einer Methode benutzt werden, werden bereits durch den Methodenprolog gesichert. US.ENABLE_FLOATS kann in einer Exception-Methode oder in einer Methode, die durch eine Exception-Methode aufgerufen wird, plaziert werden.\\ 
-Auch wenn wie im Falle des Decrementers eine action-Methode aufgerufen wird und diese in einer Unterklasse überschrieben wird, muss die action-Methode der Unterklasse US.ENABLE_FLOATS aufrufen, weil in der Decrementer-Exception Methode ja noch nicht klar ist, dass die Floats benützt werden. Werden aus dieser action-Methode weitere Methoden (z.B. Math.sin) aufgerufen, muss dort drin US.FLOAT_ENABLE() nicht mehr aufgerufen werden.