pub struct BeispielCPU { /* private fields */ }Expand description
Eine fiktive Beispiel-CPU.
Trait Implementations§
Source§impl CPU for BeispielCPU
impl CPU for BeispielCPU
Source§fn eins_ausführen(&mut self) -> Result<u64, ()>
fn eins_ausführen(&mut self) -> Result<u64, ()>
Sehen wir uns einmal genauer an, wie unsere fiktive CPU eine Rechenoperation vornimmt.
Keine Sorge, wenn du den exakten Programmablauf nicht verstehst: Es geht hier vielmehr um das Konzept als die tatsächliche Anwendung. Solltest du trotzdem Verständnisfragen haben, konsultiere gerne https://doc.rust-lang.org/std/index.html sowie https://doc.rust-lang.org/book/title-page.html oder Bjarne.
§Fetch
let instruction = self.instructions[self.instruction_pointer];Hier deklarieren wir die Variable instruction und laden sofort die
aktuelle instruction (vorgegeben durch instruction_pointer) aus dem
Vektor instructions.
§Decode und Execute
self.return_register = match instruction {
Instructions::Addieren => self.rax + self.rbx,
Instructions::Subtrahieren => self.rax - self.rbx,
};Hier wird sowohl dekodiert als auch ausgeführt:
- Mit
matchmachen wir effektiv ein if {} else if {} zu einer übersichtlichen Operation und bieten Ausgänge für alle möglichen Operationen - Wenn die Operation Addieren ist (dekodieren):
- Addiere rax und rbx (ausführen)
- Wenn die Operation Subtrahieren ist
(dekodieren):
- Subtrahiere rbx von rax (ausführen)
§Save
Ok(self.return_register)Das berechnete Ergebnis wird wieder zurück gegeben und die Funktion endet.
Source§fn architektur(&self) -> Architektur
fn architektur(&self) -> Architektur
Die Architektur, zu der dieser Prozessor gehört.
Source§fn basis_takt(&self) -> u64
fn basis_takt(&self) -> u64
Der Standard-Takt der CPU
Source§fn turbo_takt(&self) -> Option<u64>
fn turbo_takt(&self) -> Option<u64>
Der Turbo-Takt ist der Takt, mit dem die CPU arbeitet, wenn diese erhöhte
Last sowie eine ausreichend niedrige Temperatur besitzt.
fn alles_ausführen(&mut self) -> Result<Vec<u64>, ()>
Auto Trait Implementations§
impl Freeze for BeispielCPU
impl RefUnwindSafe for BeispielCPU
impl Send for BeispielCPU
impl Sync for BeispielCPU
impl Unpin for BeispielCPU
impl UnwindSafe for BeispielCPU
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more