--- title: Hence version: 1.0.0 theme: dracula footer: Grimm header: Hence marp: true size: 4K --- # Hence Ein Ausflug in die Welt einer virtuellen CPU _Dominic Grimm_ ![bg left](./assets/brian-kostiuk-S4jSvcHYcOs-unsplash.jpg) --- # Inhalt - Was ist eine CPU? - Überblick Assembler - Hence - (Hence-)Forth => _Workshop_ --- # Was ist eine CPU? - Herzstück eines Computers - Kleiner Chip auf Hauptplatine - Verarbeitung Arithmetik und Logik - Zugriff auf Speicher und Peripherie ![bg right](./assets/harrison-broadbent-VOz0gV9HC0I-unsplash.jpg) --- ## Aufbau ![bg right:35% fit](./assets/was-ist-cpu-darstellung.png) - _Steuerwerk, Rechenwerk, Cache, Register_ - Cache: schneller Speicher für oft benötigte Daten - CPU kommuniziert über Bus-Systeme - Leistung abhängig von Kernzahl, Taktfrequenz, Cache und Architektur - Neueste Entwicklungen: Multi-Core-Prozessoren und KI --- ## Machine code - Niedrigste Ebene der Programmierung. - Binäre Instruktionen, direkt von der CPU ausgeführt - Jede CPU-Architektur hat ihre eigene Maschinensprache, die spezifisch für diese Architektur ist - Sehr effizient, da direkt von CPU ausgeführt - Meist in höherer Programmiersprache geschrieben => *Assembler* --- ### Beispiel *hexadezimal kodiert (`hexdump`)* ``` 00000000 03 7f fc 86 03 a0 00 06 00 06 03 c0 02 8b 06 00 |................| 00000010 05 03 c0 01 8c 04 00 06 8c 03 00 01 06 00 05 03 |................| * ``` | Code | Opcode | Argument | | ---------- | -------------- | ---------------- | | `03 7f fc` | `0x03` (`ts`) | `0x7ffc` (32764) | | `86` | `0x06` (`tlr`) | | | `03 a0 00` | `0x03` (`ts`) | `0xa000` (40960) | --- # Überblick Assembler ![width:30cm](./assets/assembler.png) --- # Hence - Virtuelle "CPU" (eher SBC) -