__Uebung/JIT__ //Was haben wir in der Uebung gemacht?// * Interpreter (inkl. durchfaedeln) * JIT, hier wurde gefragt: - Trampolin & wie mans los wird - Registervergabe per Linear Scan (inkl. grober Erklaerung wie man die Lebensspannen berechnet) - inlining, was muessen wir beachten (Adressen & returns patchen, symb. Register umbennen) __Prolog__ //M.A.U.S?// Match/Attach/Unify/Succeed //Simples Beispiel:// g(a, b). g(c ,d). //Anfrage: g(c, X), was macht M.A.U.S. damit?// __Haskell__ //Haskell - Was muss man bei der Uebersetzung beachten// Closures fuer zB fluechtende/unterversorgte Fkts, grobes Beispiel per unterversorgtem + __Linker&Loader__ Was passiert bei dynamischen shared libs? __Exceptions__ //Exceptions, wie geht das?// Stack Cutting & Stack Unwinding erklaeren __GC__ //Referenzzaehler erklaeren (& Nachteile?// -> Zykl. Muell wird nicht erkannt) //Mark&Sweep erklaeren (& Wurzeln nennen:// Register, Stack und globale Var.) //Basisimplementierung ist rekursiv, warum ist das schlecht?// Rekursion bei Speicherknappheit //Kopierende Speicherbereiniger erklaeren (& Nachteile?// -> Nur halber speicher wird genutzt) //Generationelle Speicherbereiniger erklaeren// //Zu gen. Speicherber.: Warum kann es in Haskell keine Referenzen in die junge Generation geben?// Immutable Objekte //Programmiersprache D (C++ mit GC), wie bekommst du den GC kaputt?// Adressen in Ints casten, in Dateien speichern oder per Netzwerk verschicken ;) __Prozedurale Abstraktion__ //Viel Code, aber System mit sehr wenig Speicher, was mach ich?// ARM Thumb (Subset des Instruktionssets mit kuerzerer Darstellung 16 anstelle von 32bit) Instr. komprimieren (& beim Laden entpacken + Umrechnen von unkompr. auf kompr. Addr.) __XText__ //Was ist Metamodell/Modell?//