Das letzte Mal müssen wir uns das letzte angucken. Ich habe Thomas 32 mitnehmen.
Ja, es gibt Leute, die machen ein Define, Add,
ja und dann kommt unten rein, Bit Size gleich 32, dann Carry Effect, das 33. Bit.
L, F, R, N.
Also an sich müsste so etwas gehen mit einem Define, Addition von N-Bit,
irgendwas in der Art, if, also erstmal, das was ich, Resultat ist gleich ob 1 plus ob 2,
also ich skizziere das mal, das ist jetzt kein fertiger Code, und dann irgendwie so if N
gleich 8, Carry Flag ist gleich Resultat geschiftet um 8 und 1, L, F, N gleich Carry Flag anders.
Und dann benutzt das hinterher nur noch in Anführungsstrichen als Addiere mit 8-Bit, Addiere mit 16-Bit,
Addiere mit, der GCC ist insofern schön schlau, also wenn hier dieses Code Fragment irgendwo reinfügt
und das N ist 8, dann ist das hier wahr, das sieht der GCC, 8 gleich 8, dann fliegt die Bedingung schon mal raus,
das bleibt drin, hier N gleich 16, 8 gleich 16, nö, ist eh falsch, also fliegt der ganze Kram raus,
also performance-mäßig müsste das hinhauen. Hast du das so gemacht oder?
Okay, also die Defines kann man natürlich auch in externe Dateien auslagern und einmal mit N gleich 8 inkluden,
einmal mit N gleich 16, das ist ungefähr das wie QEMU das macht. Also die haben praktisch alle Operationen
in einer externen Datei und arbeiten praktisch immer mit diesem N und dann wird das N definiert als 8
und dann inkluden sie die Datei, dann wird das N auf 16 gesetzt, nochmal die gleiche Datei inkluden
und das ganze dann für 8, 16, 32 und in dem Fall auch noch 64 und dann passt die Sache.
Jo, okay, das ist kein echtes Problem, das ist nur Handwerk, man muss es machen.
Wir diskutieren gerade drüber, wie das ausschaut mit den zu programmierenden virtuellen Maschinen.
Du wolltest glaube ich auch eine basteln, ne? Wie weit bist denn du?
Vielleicht hat sie ihn ja geschickt, also die erste Aufnahme zu uns.
Stimmt, von einem habe ich die Frage von dir gekriegt, okay, kann sein.
Sie haben ja auch zurückgeschickt.
Okay, dann warst du das. Ich sehe manchmal Namen in der E-Mail und ich sehe Gesichter,
aber wie die Gesichter mit den Namen zusammenpassen.
Allerdings haben die Flex nicht bei jedem Befehl, vielleicht habe ich mir das erspart.
Ja, erst einmal, okay.
Jo, was waren sonst noch Schwierigkeiten?
Wenn man mal einen Buck hat, dann war es ein bisschen blöd, dass man den Buck nicht hat.
Also wenn es halt wirklich läuft, dass man das irgendwie abschützt oder endlos schleift
und dann ist das aber nur ein Zirkusdruck, und dann, dass du es findest, blöd.
Ihr könnt euch vorstellen, wir haben Windows versucht laufen zu lassen in Fahrmaschinen.
Er läuft eine halbe Stunde und stürzt ab.
Oder noch schöner, er läuft eine halbe Stunde und hängt.
Und hängt aber auch nicht im Sinne von Halt, sondern hängt im Sinne von er macht ab und zu einen Interrupt.
Den macht er auch wunderschön, aber ansonsten geht nichts mehr.
Ja, wer da eine gute Idee hat, der ist herzlich willkommen im Team.
Ich glaube, das sind so die unangenehmsten Dinge, die man im Moment haben kann.
Jo, das ist bei uns glaube ich das Hauptproblem.
Was habt ihr sonst an Problemchen?
Ich glaube, das waren schon die zwei Hauptthemen.
Einmal ist es mühsam, weil es so für euch so viel ist.
Erstmal viele Befehle, zweitens die auch noch in den Varianten.
Und das zweite, wenn man so alle hingehackt hat, mit Mühe von der Kleinarbeit, mit Defines oder sonst wie.
Dann die wagen, warum jetzt um Gottes Willen dieses eine Bit da jetzt verloren gegangen ist.
Okay, das ist jetzt bei euch noch nicht das Problem.
Also ich habe ja nicht geschrieben, es muss innerhalb von fünf Millisekunden abgearbeitet sein das Programm.
Das ist mir erstmal wurscht. Aber gut, wenn das dann hinterher mal flutschen soll, ja.
Was habt ihr so an Erfahrung? Wie lange braucht denn so ein Befehl?
Presenters
Zugänglich über
Offener Zugang
Dauer
01:25:56 Min
Aufnahmedatum
2012-11-30
Hochgeladen am
2019-05-05 02:19:04
Sprache
de-DE
Vorgestellt werden verschiedene Virtualisierungs-Ansätze:
-
Emulation
-
Just-In-Time-Compiler
-
Para-Virtualisierung
-
Bibliotheks-basierte Virtualisierung
-
OS-Virtualisierung
Lernziele und Kompetenzen:
Studierende, die das Modul erfolgreich abgeschlossen haben:
-
erläutern verschiedene Motivationen für den Einsatz von VMs
-
unterscheiden verschiedene VMs
-
klassifizieren verschiedene Ziele unterschiedlicher VMs (z.B. Performance, Konfigurierbarkeit, Genauigkeit, ...)
-
hinterfragen verschiedene Simulationansätze für MMUs
-
erstellen virtuelle Komponenten und Busse
-
strukturieren Callbacks und entsprechendes Forwarding und Caching
-
unterscheiden zwischen Architektur, Chip und Komponente
-
klassifizieren unterschiedliche Just-In-Time-Compiler-Ansätze
-
erzeugen JIT Code aus vorgefertigten Code-Teilen
-
bewerten unterschiedliche JIT-Code-Optimierungen
-
erläutern Probleme bei der JIT-Code-Invalidierung
-
nennen JIT Probleme mit Exceptions/Interrupts sowie berechnete Sprüngen und Return-Instruktionen
-
unterscheiden verschiedene JIT Cache-Verwaltungen
-
beschreiben Möglichkeiten der Fehlerinjektion durch VMs
-
entwickeln ein an JIT angepasstes virtuelles "Hardware"-Design
-
erläutern die Java-VM Instruktionssatz-Architektur
-
nutzen Hardware-basierte Virtualisierung
-
entwickeln Verfahren zum Ausfiltern bestimmter Befehle
-
erläutern Probleme der Speicherverwaltung bei HW-basierter Virtualisierung
-
nutzen User-Mode-Emulation zur Paravirtualisierung
-
diskutieren Möglichkeiten von Debuggern für die Umleitung von System-Calls und die Ausfilterung von Befehlen
-
nutzen einen Hypervisor zur Paravirtualisierung
-
unterscheiden verschiedene Ansätze zur Geräteverwaltung in paravirtualisierten Systemen
-
erläutern Betriebssystem-basierte Virtualisierung
-
entwickeln unterschiedliche Bibliotheks-basierte Virtualisierungen
-
erläutern Probleme beim Speicher-Layout bei Bibliotheks-basierte Virtualisierung
-
konzipieren Personalities für Bibliotheks-basierte Virtualisierungen
-
beurteilen Probleme bei der korrekten Zeit-Simulation
-
nennen Ideen für die dynamische Anpassung der Zeit-Simulation
-
klassifizieren bekannte VMs (z.B. VICE, FAUmachine, QEMU, Bochs, JVM, KVM, User-Mode-Linux, Xen, VServer, Wine)
-
diskutieren in der Gruppe Vor- und Nachteile von bestimmten VM-Ansätzen
-
untersuchen CPU-Emulationen
-
untersuchen Geräte-Emulationen