diff --git a/README.md b/README.md index eefd222..88d3e71 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,6 @@ classDiagram + abstract void write(Address address, Word data) + abstract void dump() } - class Program class ProgramCounter { - int PC - int SysTick @@ -29,6 +28,7 @@ classDiagram + boolean halted() + void halt() } + class Program class Instruction { + abstract void execute(Memory memory, ProgramCounter pc) # abstract String opcode() @@ -62,67 +62,14 @@ classDiagram + String toString() + boolean equals(Object other) } - 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() + class LongMemory { + - long[] memory + + LongMemory() + + LongMemory(int size) + + Word read(Address address) + + int size() + + void write(Address address, Word data) + + void dump() } Memory <|-- LongMemory Word <|-- LongWord @@ -132,38 +79,4 @@ 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 -sequenceDiagram -participant Computer -participant Program -participant Memory -participant ProgramCounter -participant Instruction - -Computer -> Program: load(program) -loop Program Execution - Program -> Computer: run() - loop Instructions Execution - Computer -> ProgramCounter: incPC() - ProgramCounter -> Program: getPC() - Program -> Program: executeInstruction() - Program -> Instruction: execute(memory, PC) - Instruction -> Memory: read/write(address) - Program -> ProgramCounter: incPC() - end -end ```