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