Compare commits

..

No commits in common. "273628c41a3ce22c6c40d4db31ec612a5810434d" and "9f3b5f17b9c14012664a1183e4379e3e32748bb2" have entirely different histories.

105
README.md
View file

@ -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
```