hence/presentation/presentation.md

102 lines
1.8 KiB
Markdown

---
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_
<style scoped>
h1 {
padding-top: 1.5em;
}
</style>
![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)
-