]> Witch of Git - jade-mouse/blob - toolchain/src/inst.rs
Start adding the toolchain
[jade-mouse] / toolchain / src / inst.rs
1 pub enum Reg {
2 R0,
3 R1,
4 R2,
5 R3,
6 }
7
8 pub enum RegPair {
9 R1R0,
10 R3R2,
11 }
12
13 pub enum Op1 {
14 Inc,
15 Dec,
16 Neg,
17 Compl,
18 }
19
20 pub enum OpI {
21 Add7(Imm7),
22 Sub6(Imm6),
23 Lsl(Imm3),
24 Lsr(Imm3),
25 Asr(Imm3),
26 Rol(Imm3),
27 And(Imm8),
28 Or(Imm8),
29 Xor(Imm8),
30 }
31
32 pub enum Op2 {
33 Add,
34 Sub,
35 And,
36 Or,
37 Xor,
38 // These are preliminary
39 Lsl,
40 Rol,
41 Bic,
42 }
43
44 pub struct Imm3(u8);
45 pub struct Imm5(u8);
46 pub struct Imm6(u8);
47 pub struct Imm7(u8);
48 pub struct Imm8(u8);
49
50 pub enum Addr {
51 Imm(Imm7),
52 Off(Reg, Imm5),
53 One(Reg),
54 Pair(RegPair),
55 }
56
57 pub enum Inst {
58 Mov(Reg, Reg),
59 CallR(Reg),
60 Alu1(Reg, Op1),
61 Load(Reg, Addr),
62 Store(Addr, Reg),
63 JumpR(Reg),
64 JumpI(Imm8),
65 CallI(Imm8),
66 AluI(Reg, OpI),
67 Skip(Reg, Reg),
68 Alu2(Reg, Op2, Reg),
69 }