TU Wien:Abstrakte Maschinen VO (Krall)/Fragestunde 2014S Zusammenfassung

Aus VoWi
Zur Navigation springen Zur Suche springen

Low Level Zeug[Bearbeiten | Quelltext bearbeiten]

  • RISC vs. CISC, ISA vs Microarchitecture
  • Instruction Level-Parallelism (Pipelining)
  • branch prediction
  • Inorder vs. Out of Order
  • Was brauch ich für Out of Order Executions? Reservation Stations, Completion Queue, Register Renaming
  • Was sind Precise Interrupts?
  • Artikel PPC 4604

Threaded Codes (Kopien der Folien)[Bearbeiten | Quelltext bearbeiten]

  • Welche Arten? Subroutinge Threaded, Indirect Threaded, Token Threaded
  • Unterschiede?
  • Was ist schneller? Subroutine vs Direct Threaded ==> Das hängt davon ab
  • CISC (Rücksprung am Stack) vs RISC (Rücksprung im Register)
  • im allgemeinen Direct schnller

Forth ähnlichen Sprachen[Bearbeiten | Quelltext bearbeiten]

  • Interpretative Prozessor
  • das ist eine Stack-Maschine, Grundlage für viel anderes
  • Wie funktioniert das?
  • andere (lesbare) Stack-Maschinen (PostScript <=> Stack Maschine Assembler)
  • JVM => JASMIN

Pascal P4 Maschine[Bearbeiten | Quelltext bearbeiten]

  • Eine der 1. wirklichen Stackmaschinenen Zwischensprachen
  • für Compiler-Interpreter-Systeme
  • hats schon früher so was ähnliches gegeben
  • Pascal P4 ist typischer Vertreter
  • Wie schaut die Maschine aus?
  • getypte Stackmaschine
  • einen / zwei Rechenbefehle erklären (add, sub)
  • wesentliche Register
  • Program Counter
  • Stackpointer
  • Extreme Pointer
  • 4 Instruktionen für den Unterprogrammaufruf
  • Zuerst Stack Frame aufbauen, dann in die Prozedur hinein (enter),...
  • wie schaut Stack Frame aus, Static Link, Dynamic Link

Java VM[Bearbeiten | Quelltext bearbeiten]

  • Java VM ist getypt, nicht vollständig getypt (swap, dup nicht getypt)
  • spezifiziert die Basis Typen (Pointer, 64bit Int, Double, Long, ...)
  • nicht definiert, wie der Activation Record aussieht (der Programmiererin überlassen)
  • Argumente eines Methodenaufrufs sind die ersten lokalen Variablen (wo? was?)
  • Refernzen und PC sind 32 bit, sind aber relativ einfach konvertierbar (Wenn Typen von Stack bekannt)
  • es gibt .class Files, wichtig da drin ist der Constant Pool
  • drin sind auch Attribute
  • Code-Attribut ist wichtig, da steht der Byte Code drin
  • 3- 4 Befehle sollten erklärbar sein


  • Wie funktioniert der CACAO-JIT?
  • Einfache Übersetzung nicht hochoptimierter Maschinen-Code
  • 4-Schritte:
  1. Parsen
  2. Stackanalyse (Befehle und Typen berechnen, wo liegen die Zwischenergebnisse)
  3. Registerbelegung
  4. Codeauswahl


Dalvik Folien selber runter laden (google it!, wenn nicht gefunden -> e-mail)

dot-Net[Bearbeiten | Quelltext bearbeiten]

  • unterschied Java VM <-> .Net VM
  • dort gibts eine Unterscheidung managed / unmanaged
  • unmanaged Teil ist unsicher, kann C und Pointer und alles
  • Unterstützung für funktionale Programmierung (kommt aber schön langsam nach Java)

Baum-Maschinen[Bearbeiten | Quelltext bearbeiten]

  • Was ist ein abstrakter Syntaxbaum?
  • Editoren auf Syntaxbäumen (etwas anders als Fullscreen-Editor)
  • Tricks für effiziente Interpreter!!
  • Impliziter / expliziter Stack
  • iterativer Zeiger auf Vaterknoten (rekursion dann nicht mehr nötig)
  • Cornell-Synthesizer hat den Syntaxbaum nicht als Pointer-Struktur sondern GOTOs
  • (viele kleine Programmteile, durch GOTOs verbunden)
  • PSG (Darmstädter ProgramGenerator)
  • hat verschiedene Programmiersprachen für konkrete / abstrakte Syntax, statische / dynamische Semantik
  • um Compiler und Interpreter zu beschreiben
  • generiert Automatisch Editor / Interpreter

Dalvik VM[Bearbeiten | Quelltext bearbeiten]

  • was ist effizienter? Stack vs Registermaschine (gibt einen Artikel)
  • Vor/Nachteile Stack/Registermaschine
  • Stackmaschine werden dynamisch viele Instruktionen ausgeführt
  • Bandbreite bei Registermaschine ist höher, da mehr Operanden(kodiert)
  • Registermaschine ist im allgemeinen Effizienter
  • Abstrakte-Maschine großteil der Zeit obstruct (?) & dispatch
  • einfacher Switch-based Interpreter: größter Vorteil für Register Maschine, umso intelligenterer Interpreter desto weniger Vorteil für Register
  • deswegen LUA und DALVIK VM Registermaschine
  • nicht nur 8 oder 16 register, Dalvik hat 256
  • Davlik-VM schreibt .class Files um
  • wie bei Archiv alles zusammengefasst (nicht nur Constant pool so groß)
  • nach typen sortiert, damit fallen typ-tags weg

abstrakte Maschinen für logische Sprachen[Bearbeiten | Quelltext bearbeiten]

  • Unifikation in Einzelschritte zerlegen
  • für diese gibt es einzelne Befehle in der maschine
  • einfache gibts überall, unterscheidung void, global und lokale variablen
  • einfach auftreten vs weiter auftreten
  • clause und last-call optimierung
  • Warren-Abstract Maschine (ungefähr klassische Registermaschine)
  • hat Argumentregister, wie bei RegisterMaschine mit Argumenten und calls
  • die Unifikation wird in Argumentregister, put-Befehle schreiben in Argumentregister, clause aufrufen, get-instruktionen führe unifikation durch
  • 2 Arten von Stackframes
  • Choice Points
  • Deterministischen
  • Nicht ganze Information darauf speichere
  • Werte in Argumentregister
  • Vorteile: einfache Last-Calloptimierung
  • weil Werte schon in Argumentregistern stehen, brauch ich keinen neuen Call und PUT
  • Stackframes müssen nicht hin und her kopiert werden
  • Nachteil: Aufgeteilt in PUT-Teil und 2. Schritt im GET-Teil => Typ-Abfragen
  • versucht die Vienna Abstract Maschine auszugleichen
  • holt gleichzeitig einen Befehl für subgoal und head, führt vermanschten Befehl aus
  • Es gibt mehre Varianten von Vienna Abstrackt Maschine (1p und 2p)
  • 1P und 2P, 1 oder 2 Instruktionspointer
  • 2p maschine funktioniert auf realer Hardware nicht
  • für Compiler gibt es die 1P maschine / befehlskombination zur compile-zeit
  • optimierung zur laufzeit
  • zur compile zeit kann auch schon viel unnötiges entfernt
  • Reference Chain -> impl VAM 1p zu impl.

SECD[Bearbeiten | Quelltext bearbeiten]

  • grundlagen, Lambda Kalkül
  • nicht verlangt: Lambda-Ausdruck mit mehr als 3 Zeichen verstehen
  • Norman-Order, Applikativ-Order
  • Alpha, Beta, Etha Conversion
  • SECD-Maschine, wofür stehen die Buchstaben (Register)
  • Stack Environment Code Dump
  • ist eine Stack Maschine
  • alles als Liste implementiert
  • Grundlage für viele LISP-ähnliche und funktionale Sprachen und Hardware
  • if-then-else: continuation ist am dump (wird von JOIN dann verbraucht)