Add address deref, syntax, and deref sizes
Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
This commit is contained in:
@@ -134,6 +134,10 @@ pub enum Source {
|
||||
Addr32(Addr),
|
||||
Addr16(Addr),
|
||||
Addr8(Addr),
|
||||
RegAddr64(Reg),
|
||||
RegAddr32(Reg),
|
||||
RegAddr16(Reg),
|
||||
RegAddr8(Reg),
|
||||
Reg(Reg),
|
||||
Imm(u64),
|
||||
}
|
||||
@@ -142,6 +146,7 @@ impl Source {
|
||||
pub fn len(&self) -> usize {
|
||||
match self {
|
||||
Source::Addr64(_) | Source::Addr32(_) | Source::Addr16(_) | Source::Addr8(_) => 8,
|
||||
Source::RegAddr64(_) | Source::RegAddr32(_) | Source::RegAddr16(_) | Source::RegAddr8(_) => 1,
|
||||
Source::Reg(_) => 1,
|
||||
Source::Imm(_) => 8,
|
||||
}
|
||||
@@ -154,6 +159,10 @@ pub enum Dest {
|
||||
Addr32(Addr),
|
||||
Addr16(Addr),
|
||||
Addr8(Addr),
|
||||
RegAddr64(Reg),
|
||||
RegAddr32(Reg),
|
||||
RegAddr16(Reg),
|
||||
RegAddr8(Reg),
|
||||
Reg(Reg),
|
||||
}
|
||||
|
||||
@@ -161,23 +170,35 @@ impl Dest {
|
||||
pub fn len(&self) -> usize {
|
||||
match self {
|
||||
Dest::Addr64(_) | Dest::Addr32(_) | Dest::Addr16(_) | Dest::Addr8(_) => 8,
|
||||
Dest::RegAddr64(_) | Dest::RegAddr32(_) | Dest::RegAddr16(_) | Dest::RegAddr8(_) => 1,
|
||||
Dest::Reg(_) => 1,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TODO : make this an enum
|
||||
|
||||
pub const DEST_ADDR64: u8 = 0b0000;
|
||||
pub const DEST_ADDR32: u8 = 0b0001;
|
||||
pub const DEST_ADDR16: u8 = 0b0010;
|
||||
pub const DEST_ADDR8: u8 = 0b0011;
|
||||
pub const DEST_REG: u8 = 0b0100;
|
||||
pub const DEST_REG_ADDR64: u8 = 0b0100;
|
||||
pub const DEST_REG_ADDR32: u8 = 0b0101;
|
||||
pub const DEST_REG_ADDR16: u8 = 0b0110;
|
||||
pub const DEST_REG_ADDR8: u8 = 0b0111;
|
||||
/* immediates - not used, invalid */
|
||||
pub const DEST_REG: u8 = 0b1100;
|
||||
|
||||
pub const SOURCE_ADDR64: u8 = 0b0000;
|
||||
pub const SOURCE_ADDR32: u8 = 0b0001;
|
||||
pub const SOURCE_ADDR16: u8 = 0b0010;
|
||||
pub const SOURCE_ADDR8: u8 = 0b0011;
|
||||
pub const SOURCE_REG: u8 = 0b0100;
|
||||
pub const SOURCE_IMM64: u8 = 0b0101;
|
||||
pub const SOURCE_IMM32: u8 = 0b0110;
|
||||
pub const SOURCE_IMM16: u8 = 0b0111;
|
||||
pub const SOURCE_IMM8: u8 = 0b1000;
|
||||
pub const SOURCE_REG_ADDR64: u8 = 0b0100;
|
||||
pub const SOURCE_REG_ADDR32: u8 = 0b0101;
|
||||
pub const SOURCE_REG_ADDR16: u8 = 0b0110;
|
||||
pub const SOURCE_REG_ADDR8: u8 = 0b0111;
|
||||
pub const SOURCE_IMM64: u8 = 0b1000;
|
||||
pub const SOURCE_IMM32: u8 = 0b1001;
|
||||
pub const SOURCE_IMM16: u8 = 0b1010;
|
||||
pub const SOURCE_IMM8: u8 = 0b1011;
|
||||
pub const SOURCE_REG: u8 = 0b1100;
|
||||
|
||||
Reference in New Issue
Block a user