Eine schnelle Bytecode-VM für Arithmetik (Teil 2): Compiler und Decompiler in Haskell
Dieser Beitrag, der zweite einer Serie, beschreibt einen Compiler und einen Decompiler für eine schnelle Bytecode-Virtual Machine für arithmetische Ausdrücke in Haskell. Er erklärt, warum Bytecode schneller als die AST-Interpretation ist, entwirft eine stackbasierte Bytecode-Virtual Machine und beschreibt Bytecode-Instruktionen für Num-, BinOp-, Var- und Let-AST-Knoten. Der Compiler verwendet vorab zugewiesene Byte-Arrays und Zeigermanipulation für optimale Leistung mit robuster Fehlerbehandlung. Leistungs-Benchmarks, die verschiedene Datenstrukturen und den Kontrollfluss vergleichen, werden vorgestellt. Schließlich wird ein Decompiler implementiert, um Debugging und Tests zu unterstützen.
Mehr lesen