35 lines
813 B
Rust
35 lines
813 B
Rust
use crate::cpu::Word;
|
|
|
|
type RegisterMem = String;
|
|
|
|
pub type ConstId = String;
|
|
|
|
#[derive(Debug)]
|
|
pub enum Const {
|
|
CS(ConstId),
|
|
C(u8),
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub enum Operation {
|
|
NOP,
|
|
HALT,
|
|
// R type
|
|
ADD(RegisterMem, RegisterMem, RegisterMem),
|
|
SUB(RegisterMem, RegisterMem, RegisterMem),
|
|
AND(RegisterMem, RegisterMem, RegisterMem),
|
|
XOR(RegisterMem, RegisterMem, RegisterMem),
|
|
SLL(RegisterMem, RegisterMem, RegisterMem),
|
|
BEQ(RegisterMem, RegisterMem, RegisterMem),
|
|
BGT(RegisterMem, RegisterMem, RegisterMem),
|
|
LOAD(RegisterMem, RegisterMem, RegisterMem),
|
|
STORE(RegisterMem, RegisterMem, RegisterMem),
|
|
|
|
// I Type
|
|
SLI(RegisterMem, Const),
|
|
ADDI(RegisterMem, Const),
|
|
CALL(RegisterMem, Const),
|
|
|
|
// J Type
|
|
JAL(RegisterMem, RegisterMem, Const),
|
|
}
|