zig8/src/instruction.zig

37 lines
1.3 KiB
Zig

pub const Instruction = union(enum) {
CLS: void, // 0x00E0
RET: void, // 0x00EE
JP: u12, // 0x1nnn
CALL: u12, // 0x2nnn
SE_Vx: struct { x: u4, kk: u8 }, // 0x3xkk
SNE_Vx: struct { x: u4, kk: u8 }, // 0x4xkk
SE_Vx_Vy: struct { x: u4, y: u4 }, // 0x5xy0
LD_Vx: struct { x: u4, kk: u8 }, // 0x6xkk
ADD_Vx: struct { x: u4, kk: u8 }, // 0x7xkk
LD_Vx_Vy: struct { x: u4, y: u4 }, // 0x8xy0
OR: struct { x: u4, y: u4 }, // 0x8xy1
AND: struct { x: u4, y: u4 }, // 0x8xy2
XOR: struct { x: u4, y: u4 }, // 0x8xy3
ADD_Vx_Vy: struct { x: u4, y: u4 }, // 0x8xy4
SUB: struct { x: u4, y: u4 }, // 0x8xy5
SHR: struct { x: u4, y: u4 }, // 0x8xy6
SUBN: struct { x: u4, y: u4 }, // 0x8xy7
SHL: struct { x: u4, y: u4 }, // 0x8xyE
SNE_Vx_Vy: struct { x: u4, y: u4 }, // 0x9xy0
LD_I: u12, // 0xAnnn
JP_V0: u12, // 0xBnnn
RND: struct { x: u4, kk: u8 }, // 0xCxkk
DRW: struct { x: u4, y: u4, n: u4 }, // 0xDxyn
SKP: u4, // 0xEx9E
SKNP: u4, // 0xExA1
LD_Vx_DT: u4, // 0xFx07
LD_Vx_K: u4, // 0xFx0A
LD_DT_Vx: u4, // 0xFx15
LD_ST_Vx: u4, // 0xFx18
ADD_I_Vx: u4, // 0xFx1E
LD_F_Vx: u4, // 0xFx29
LD_B_Vx: u4, // 0xFx33
LD_IPTR_Vx: u4, // 0xFx55
LD_Vx_IPTR: u4, // 0xFx65
};