2020-01-25 19:17:39 -05:00
|
|
|
use crate::vm::reg::*;
|
|
|
|
|
|
|
|
|
|
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
|
|
|
|
#[allow(dead_code)]
|
|
|
|
|
pub enum Inst {
|
|
|
|
|
Add(Reg, Reg),
|
|
|
|
|
Mul(Reg, Reg),
|
|
|
|
|
Div(Reg, Reg),
|
2020-01-26 11:18:53 -05:00
|
|
|
Mod(Reg, Reg),
|
|
|
|
|
INeg(Reg),
|
2020-01-25 19:17:39 -05:00
|
|
|
And(Reg, Reg),
|
|
|
|
|
Or(Reg, Reg),
|
|
|
|
|
Xor(Reg, Reg),
|
|
|
|
|
Shl(Reg, Reg),
|
|
|
|
|
Shr(Reg, Reg),
|
|
|
|
|
|
|
|
|
|
CmpEq(Reg, Reg),
|
|
|
|
|
CmpLt(Reg, Reg),
|
2020-01-28 13:51:25 -05:00
|
|
|
Jmp(Reg),
|
2020-01-25 19:17:39 -05:00
|
|
|
Jz(Reg),
|
|
|
|
|
Jnz(Reg),
|
|
|
|
|
|
|
|
|
|
Load(Reg, Reg),
|
|
|
|
|
Store(Reg, Reg),
|
2020-01-28 13:51:25 -05:00
|
|
|
StoreImm(Reg, u64),
|
2020-01-26 11:18:53 -05:00
|
|
|
MemCopy(Reg, Reg),
|
|
|
|
|
RegCopy(Reg, Reg),
|
2020-01-25 19:17:39 -05:00
|
|
|
|
|
|
|
|
Nop,
|
|
|
|
|
Halt,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// https://crates.io/crates/packed_struct
|