Hardware-Software-Codesign · Systemarchitektur Dokument SA-001
[DE] [Schlagwörter]

Missionen

spacetetris: ein Power-of-10-Audit

Eine streng normkonforme Embedded-Spiel-Engine in C, ohne dynamischen Speicher.

Das Ziel war nicht nur, Tetris zu bauen. Das Ziel war ein deterministischer und hardwareunabhängiger Zustandsautomat. Der Automat befolgt die Regeln der NASA Power of 10 und MISRA C:2012.

Die Engine ruft malloc nicht auf. Sie ruft free nicht auf. Alle Spielzustandsgitter liegen global oder auf dem Stack. Das Programm belegt am Anfang und am Ende gleich viel Speicher.

Der Physik-Kern und der Zustandskern arbeiten getrennt von der Ein-/Ausgabe. tetris.h enthält keine Includes der Standardbibliothek für Ein- oder Ausgabe. Der Kern weiß nicht, was ihn zeichnet. Eine neue Anzeige ändert den Kern deshalb nicht.

Endliche Zustandsautomaten und gezählte Takte steuern den Ablauf. Die Zustandslogik ruft keine Wartefunktion auf. Eine Wartefunktion verbirgt vor dem Aufrufer, wie lange das Programm wartet. Sie macht einen Durchlauf außerdem schwer wiederholbar.

(Diese Fallstudie ist nicht vollständig. Weitere Angaben folgen, sobald ich die Lecks in der E/A-Schicht behoben habe.)