Dekejit/src/assembler/AST.rs

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),
}