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