osom_asm_x86_64/models/
instruction.rs1#![allow(non_camel_case_types)]
2
3use core::num::NonZero;
4
5use super::{Condition, GPR, Immediate, Label, Memory};
6
7#[derive(Debug, Clone, PartialEq, Eq, Hash)]
9#[must_use]
10#[repr(u16)]
11pub enum Instruction {
12 Nop { length: NonZero<u32> } = 1, SetPrivate_Label { label: Label },
19
20 SetPublic_Label { label: Label },
24
25 Ret,
27
28 Mov_RegImm64 { dst: GPR, src: super::Immediate64 },
33
34 Mov_RegImm { dst: GPR, src: Immediate },
36
37 Mov_MemImm { dst: Memory, src: Immediate },
39
40 Mov_RegReg { dst: GPR, src: GPR },
42
43 Mov_MemReg { dst: Memory, src: GPR },
45
46 Mov_RegMem { dst: GPR, src: Memory },
48
49 Add_RegImm { dst: GPR, src: Immediate },
51
52 Add_MemImm { dst: Memory, src: Immediate },
54
55 Add_RegReg { dst: GPR, src: GPR },
57
58 Add_MemReg { dst: Memory, src: GPR },
60
61 Add_RegMem { dst: GPR, src: Memory },
63
64 Sub_RegImm { dst: GPR, src: Immediate },
66
67 Sub_MemImm { dst: Memory, src: Immediate },
69
70 Sub_RegReg { dst: GPR, src: GPR },
72
73 Sub_MemReg { dst: Memory, src: GPR },
75
76 Sub_RegMem { dst: GPR, src: Memory },
78
79 Xor_RegImm { dst: GPR, src: Immediate },
81
82 Xor_MemImm { dst: Memory, src: Immediate },
84
85 Xor_RegReg { dst: GPR, src: GPR },
87
88 Xor_MemReg { dst: Memory, src: GPR },
90
91 Xor_RegMem { dst: GPR, src: Memory },
93
94 Jump_Label { dst: Label },
96
97 Jump_Reg { dst: GPR },
99
100 Jump_Mem { dst: Memory },
102
103 Call_Label { dst: Label },
105
106 Call_Reg { dst: GPR },
108
109 Call_Mem { dst: Memory },
111
112 CondJump_Label { condition: Condition, dst: Label },
114}