pc/
lib.rs

1//! Dies ist die Dokumentation für ein Programm, dass in etwa die Funktionsweise
2//! eines PCs modelliert.
3//!
4//! Hier interessiert uns primär das Modul [cpu], die anderen sind eher Platzhalter
5//! und verweisen lediglich auf die Dokumentation der anderen Präsentationen.
6//!
7//! # Quellen
8//! - <https://docs.amd.com/v/u/en-US/24593_3.43>
9//! - <https://www.intel.com/content/www/us/en/content-details/868137/intel-64-and-ia-32-architectures-software-developer-s-manual-combined-volumes-1-2a-2b-2c-2d-3a-3b-3c-3d-and-4.html>
10//! - <https://cwe.mitre.org/data/definitions/121.html>
11//! - <https://www.ibm.com/think/topics/central-processing-unit>
12//! - <https://www.giga.de/artikel/was-bedeutet-arm-prozessor-einfach-erklaert/>
13//! - <https://tinygrab.com/is-intel-arm-or-amd/>
14
15pub mod cpu;
16mod peripherie;
17
18use cpu::*;
19use peripherie::*;
20
21/// Ein einfacher PC, mit den entsprechenden Sub-Komponenten.
22pub struct PC {
23    cpu: Box<dyn CPU>,
24    peripherie: Vec<Box<dyn Peripherie>>,
25}
26
27impl PC {
28    pub fn new(cpu: Box<dyn CPU>) -> PC {
29        Self {
30            cpu,
31            peripherie: Vec::new(),
32        }
33    }
34    pub fn add_peripherie(&mut self, per: Box<dyn Peripherie>) {
35        self.peripherie.push(per);
36    }
37    pub fn run(&mut self) {
38        if self.cpu.alles_ausführen().is_err() {
39            panic!("Bin auf einen Hardware-Fehler gestoßen. Yay.");
40        }
41    }
42}
43