Größen von Bildern entfernt

master
Robert Jacob 3 months ago
parent 8ff1aa3de2
commit 1dc18a660a
  1. 27
      content/projekt/HE32/index.md

@ -9,7 +9,7 @@ image: HE32_Overview.png
keywords: nand2tetris, jack, hack
---
{{< image alt="Showtime" src="HE32_Overview.png" size="1920x1080 q90">}}
{{< image alt="Showtime" src="HE32_Overview.png" >}}
## Motivation ##
@ -71,19 +71,19 @@ im beigestellten Simulator mittels Testscript verifiziert.
Das sieht dann ungefähr so aus:
<div class="pure-g">
{{< image alt="HDL Code Sample" src="hdl_code.png" size="640x480 q90" class="pure-u-1 pure-u-md-1-2" >}}
{{< image alt="HDL Simulator" src="hdl_simulator.png" size="640x480 q90" class="pure-u-1 pure-u-md-1-2" >}}
{{< image alt="HDL Code Sample" src="hdl_code.png" class="pure-u-1 pure-u-md-1-2" >}}
{{< image alt="HDL Simulator" src="hdl_simulator.png" class="pure-u-1 pure-u-md-1-2" >}}
</div>
Das IS sieht wie folgt aus:
{{< image alt="IS Overview" src="hack_is.png" size="1024x640 q90">}}
{{< image alt="IS Overview" src="hack_is.png" >}}
Hierfür ist ein Assembler zu erstellen, der als Output 16-Bit Code (als 'Binär-Text') generiert, z.Bsp. wie folgt:
<div class="pure-g">
{{< image alt="Assembly Sample" src="asm_code.png" size="640x480 q90" class="pure-u-1 pure-u-md-1-2" >}}
{{< image alt="Machine Code Sample" src="machine_code.png" size="640x480 q90" class="pure-u-1 pure-u-md-1-2" >}}
{{< image alt="Assembly Sample" src="asm_code.png" class="pure-u-1 pure-u-md-1-2" >}}
{{< image alt="Machine Code Sample" src="machine_code.png" class="pure-u-1 pure-u-md-1-2" >}}
</div>
### 2.2 VM / IL ###
@ -92,8 +92,8 @@ Zunächst macht man sich mit einer vordefinierten IL (Intermediate language) fü
vertraut. Hierzu kann der beigestellte VM-Emulator genutzt werden:
<div class="pure-g">
{{< image alt="VM Code Sample" src="vm_code.png" size="640x480 q90" class="pure-u-1 pure-u-md-1-2" >}}
{{< image alt="VM Emulator" src="vm_emulator.png" size="640x480 q90" class="pure-u-1 pure-u-md-1-2" >}}
{{< image alt="VM Code Sample" src="vm_code.png" class="pure-u-1 pure-u-md-1-2" >}}
{{< image alt="VM Emulator" src="vm_emulator.png" class="pure-u-1 pure-u-md-1-2" >}}
</div>
Als nächstes wird ein Übersetzer erstellt, von VM-Code zu Assembly Language. Wenn man diesen mit dem unter
@ -107,17 +107,17 @@ Sogar Objekte können bereits angelegt werden!
Hier mal die formale Definition:
{{< image alt="Jack Grammar" src="jack_grammar.png" size="1920x1080 q90">}}
{{< image alt="Jack Grammar" src="jack_grammar.png" >}}
Praktisch sieht der Code z.Bsp. so aus:
{{< image alt="Jack Code Sample" src="jack_code.png" size="640x480 q90" class="pure-u-1 pure-u-md-1-2" >}}
{{< image alt="Jack Code Sample" src="jack_code.png" >}}
Auch hierfür ist - unter Anleitung - ein Compiler zu erstellen. Dieser erzeugt aus Jack dann VM-Code:
<div class="pure-g">
{{< image alt="Jack Code" src="jack_code_main.png" size="640x480 q90" class="pure-u-1 pure-u-md-1-2" >}}
{{< image alt="VM Code" src="vm_code_main.png" size="640x480 q90" class="pure-u-1 pure-u-md-1-2" >}}
{{< image alt="Jack Code" src="jack_code_main.png" class="pure-u-1 pure-u-md-1-2" >}}
{{< image alt="VM Code" src="vm_code_main.png" class="pure-u-1 pure-u-md-1-2" >}}
</div>
Sieht doch gar nicht so kompliziert aus!
@ -192,7 +192,7 @@ Nach einigen Performance-Optimierungen läuft der HE32 jetzt ganz passabel. Nur
System-Bibliotheken anzupassen: In Math.multiply musste die Bitzahl erhöht werden und Sys.wait musste an
die neue Abarbeitungsgeschwindigkeit angepasst werden.
{{< image alt="HE32 running Pong" src="he32_run_pong.png" size="1920x1080 q90">}}
{{< image alt="HE32 running Pong" src="he32_run_pong.png" >}}
Die [Quellen zu HE32](https://git.hacknology.de/projekte/HE32) finden sich wie gehabt auf dem hacKNology git-server.
@ -208,6 +208,7 @@ Ok, schneller wird's nicht - Performance ist allerdings heutzutage nicht mehr so
Außerdem erlaubt das Konzept die Aufteilung in Frontend/VM/Backend - und als Frontend
können dann bei Bedarf verschiedene Hochsprachen Verwendung finden, als Backend sind unterschiedliche Targets
mit vertretbarem Aufwand machbar (siehe hierzu z.Bsp.: [LLVM](https://llvm.org/)).
- 💡Rust: Der Verzicht auf 'saubere' Mehrtaskfähigkeit beschleunigt die Abarbeitung ca. vierfach.
- 💡Eine CPU mit nur zwei Registern (ohne PC) muss extrem viel über den Stack abwickeln. Sowohl in der Emulation wie
auch in der Realität (externer Speicherzugriff!) ist das SEHR langsam. Hier gilt also: Viel(e Register) hilft viel!

Loading…
Cancel
Save