Krolyxon
Commit 4667df1

Branches

Tags

Refs →

bench51srcinstructions.rs

41 lines · 831 B · Rust

1#[repr(u8)]
2#[allow(non_camel_case_types)]
3pub enum Instruction {
4 MOV_RI = 0x01,
5 MOV_RR = 0x08,
6 ADD_RR = 0x02,
7 ADD_RI = 0x0A,
8 SUB_RR = 0x03,
9 SUB_RI = 0x0B,
10 JMP = 0x04,
11 JZ = 0x05,
12 JNZ = 0x06,
13 CMP_RI = 0x07,
14 CMP_RR = 0x09,
15 MUL = 0x0C,
16 DIV = 0x0D,
17 CALL = 0x0E,
18 RET = 0x0F,
19 HLT = 0xFF,
20}
21
22impl Instruction {
23 pub fn opcode_name(op: u8) -> &'static str{
24 match op {
25 0x01 | 0x08 => "MOV",
26 0x02 | 0x0A => "ADD",
27 0x03 | 0x0B => "SUB",
28 0x04 => "JMP",
29 0x05 => "JZ",
30 0x06 => "JNZ",
31 0x07 | 0x09 => "CMP",
32 0x0C => "MUL",
33 0x0D => "DIV",
34 0x0E => "CALL",
35 0x0F => "RET",
36 0xFF => "HLT",
37
38 _ => "???",
39 }
40 }
41}