1use super::Mov;
6use crate::{Asm, Imm16, Imm32, Imm64, Imm8, Mem16, Mem32, Mem64, Mem8, Reg16, Reg32, Reg64, Reg8};
7
8impl Mov<Reg64, Reg64> for Asm {
11 fn mov(&mut self, op1: Reg64, op2: Reg64) {
12 self.encode_rr(&[0x89], op1, op2);
13 }
14}
15
16impl Mov<Reg32, Reg32> for Asm {
17 fn mov(&mut self, op1: Reg32, op2: Reg32) {
18 self.encode_rr(&[0x89], op1, op2);
19 }
20}
21
22impl Mov<Reg16, Reg16> for Asm {
23 fn mov(&mut self, op1: Reg16, op2: Reg16) {
24 self.encode_rr(&[0x89], op1, op2);
25 }
26}
27
28impl Mov<Reg8, Reg8> for Asm {
29 fn mov(&mut self, op1: Reg8, op2: Reg8) {
30 self.encode_rr(&[0x88], op1, op2);
31 }
32}
33
34impl Mov<Mem64, Reg64> for Asm {
37 fn mov(&mut self, op1: Mem64, op2: Reg64) {
38 self.encode_mr(0x89, op1, op2);
39 }
40}
41
42impl Mov<Mem32, Reg32> for Asm {
43 fn mov(&mut self, op1: Mem32, op2: Reg32) {
44 self.encode_mr(0x89, op1, op2);
45 }
46}
47
48impl Mov<Mem16, Reg16> for Asm {
49 fn mov(&mut self, op1: Mem16, op2: Reg16) {
50 self.encode_mr(0x89, op1, op2);
51 }
52}
53
54impl Mov<Mem8, Reg8> for Asm {
55 fn mov(&mut self, op1: Mem8, op2: Reg8) {
56 self.encode_mr(0x88, op1, op2);
57 }
58}
59
60impl Mov<Reg64, Mem64> for Asm {
63 fn mov(&mut self, op1: Reg64, op2: Mem64) {
64 self.encode_rm(0x8b, op1, op2);
65 }
66}
67
68impl Mov<Reg32, Mem32> for Asm {
69 fn mov(&mut self, op1: Reg32, op2: Mem32) {
70 self.encode_rm(0x8b, op1, op2);
71 }
72}
73
74impl Mov<Reg16, Mem16> for Asm {
75 fn mov(&mut self, op1: Reg16, op2: Mem16) {
76 self.encode_rm(0x8b, op1, op2);
77 }
78}
79
80impl Mov<Reg8, Mem8> for Asm {
81 fn mov(&mut self, op1: Reg8, op2: Mem8) {
82 self.encode_rm(0x8a, op1, op2);
83 }
84}
85
86impl Mov<Reg64, Imm64> for Asm {
89 fn mov(&mut self, op1: Reg64, op2: Imm64) {
90 self.encode_oi(0xb8, op1, op2);
91 }
92}
93
94impl Mov<Reg32, Imm32> for Asm {
95 fn mov(&mut self, op1: Reg32, op2: Imm32) {
96 self.encode_oi(0xb8, op1, op2);
97 }
98}
99
100impl Mov<Reg16, Imm16> for Asm {
101 fn mov(&mut self, op1: Reg16, op2: Imm16) {
102 self.encode_oi(0xb8, op1, op2);
103 }
104}
105
106impl Mov<Reg8, Imm8> for Asm {
107 fn mov(&mut self, op1: Reg8, op2: Imm8) {
108 self.encode_oi(0xb0, op1, op2);
109 }
110}
111
112impl Mov<Mem16, Imm16> for Asm {
115 fn mov(&mut self, op1: Mem16, op2: Imm16) {
116 self.encode_mi(0xc7, 0, op1, op2);
117 }
118}