osom_asm_x86_64/models/
immediate64.rs1use super::Size;
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
5#[repr(transparent)]
6#[must_use]
7pub struct Immediate64 {
8 value: i64,
9}
10
11impl Immediate64 {
12 #[inline(always)]
13 pub const fn new(value: i64) -> Self {
14 Self { value }
15 }
16
17 #[inline]
18 pub const fn real_size(self) -> Size {
19 let value = self.value;
20 if value >= i8::MIN as i64 || value <= i8::MAX as i64 {
21 return Size::Bit8;
22 }
23 if value >= i16::MIN as i64 || value <= i16::MAX as i64 {
24 return Size::Bit16;
25 }
26 if value >= i32::MIN as i64 || value <= i32::MAX as i64 {
27 return Size::Bit32;
28 }
29 Size::Bit64
30 }
31
32 #[inline(always)]
33 #[must_use]
34 pub const fn value(self) -> i64 {
35 self.value
36 }
37}
38
39impl From<i64> for Immediate64 {
40 #[inline(always)]
41 fn from(value: i64) -> Self {
42 Self::new(value)
43 }
44}
45
46impl From<Immediate64> for i64 {
47 #[inline(always)]
48 fn from(immediate: Immediate64) -> Self {
49 immediate.value()
50 }
51}