hence/presentation/presentation.md

2.2 KiB

title version theme class marp size
Hence 1.0.0 uncover
invert
true 4K

Hence

Ein Ausflug in die Welt einer virtuellen CPU

Dominic Grimm

bg left


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


Aufbau

bg right:35% fit

  • 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

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


Hence

  • Virtuelle "CPU" (eher SBC)
  • Single core
  • 16-bit Architektur

=> maximal 64kb Speicher


Assembly

.include "$lib/core.asm"
.include "$lib/std.asm"
.include "$lib/main.asm"

data:
; ...

.jump_main

main: .main main
	ts 40		; tmp = 40
	tlr CORE_REG_A	; reg_a = 40
	
	ts 2		; tmp = 2

	tlr CORE_REG_B	; reg_a = 40
			; reg_b = 2

	ts CORE_ALU_ADD	; tmp = 6
			; reg_a = 40
			; reg_b = 2
	alu		; tmp = 42
	tls		; stack = [42]

	dbg		; => DEBUG: [42]
	pop		; stack = []
.std_stop