From 273628c41a3ce22c6c40d4db31ec612a5810434d Mon Sep 17 00:00:00 2001 From: Imbus <> Date: Sun, 21 Apr 2024 21:01:54 +0200 Subject: [PATCH] Class diagram chagnes --- README.md | 83 +++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 74 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 0836d96..eefd222 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ classDiagram + abstract void write(Address address, Word data) + abstract void dump() } + class Program class ProgramCounter { - int PC - int SysTick @@ -28,7 +29,6 @@ classDiagram + boolean halted() + void halt() } - class Program class Instruction { + abstract void execute(Memory memory, ProgramCounter pc) # abstract String opcode() @@ -62,14 +62,67 @@ classDiagram + String toString() + boolean equals(Object other) } - class LongMemory { - - long[] memory - + LongMemory() - + LongMemory(int size) - + Word read(Address address) - + int size() - + void write(Address address, Word data) - + void dump() + class Add { + - Address src + - Word imm + - Address dest + + Add(Address src, Word imm, Address dest) + + void execute(Memory memory, ProgramCounter PC) + + String opcode() + + Object[] operands() + + String toString() + } + class Copy { + - Word imm + - Address dest + + Copy(Word imm, Address dest) + + void execute(Memory memory, ProgramCounter PC) + + String opcode() + + Object[] operands() + + String toString() + } + class Halt { + + Halt() + + void execute(Memory memory, ProgramCounter PC) + + String opcode() + + Object[] operands() + + String toString() + } + class Jump { + - int index + + Jump(int index) + + void execute(Memory memory, ProgramCounter PC) + + String opcode() + + Object[] operands() + + String toString() + } + class JumpEq { + - int index + - Address src + - Word imm + + JumpEq(int index, Address src, Word imm) + + void execute(Memory memory, ProgramCounter PC) + + String opcode() + + Object[] operands() + + String toString() + } + class Mul { + - Address src1 + - Address src2 + - Address dest + + Mul(Address src1, Address src2, Address dest) + + void execute(Memory memory, ProgramCounter PC) + + String opcode() + + Object[] operands() + + String toString() + } + class Print { + - Address address + + Print(Address address) + + void execute(Memory memory, ProgramCounter PC) + + String opcode() + + Object[] operands() + + String toString() } Memory <|-- LongMemory Word <|-- LongWord @@ -79,6 +132,18 @@ classDiagram Computer --> Memory Computer --> Program Computer --> ProgramCounter + ProgramCounter --> Program + ProgramCounter --> Instruction + ProgramCounter : +toString() + Instruction : +toString() + Instruction <|-- Add + Instruction <|-- Copy + Instruction <|-- Halt + Instruction <|-- Jump + Instruction <|-- JumpEq + Instruction <|-- Mul + Instruction <|-- Print + Add --> Address ``` ```mermaid