#[macro_export]
macro_rules! register {
($register:expr) => {
instruction::Operand::Register($register)
}
}
#[macro_export]
macro_rules! indirect_register {
($register:expr) => {
instruction::Operand::Indirect($register)
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum Register {
Rax,
Rbx,
Rcx,
Rdx,
Rsi,
Rdi,
Rbp,
Rsp,
R8,
R9,
R10,
R11,
R12,
R13,
R14,
R15,
Eax,
Ebx,
Ecx,
Edx,
Esi,
Edi,
Ebp,
Esp,
R8d,
R9d,
R10d,
R11d,
R12d,
R13d,
R14d,
R15d,
Ax,
Bx,
Cx,
Dx,
Si,
Di,
Bp,
Sp,
R8w,
R9w,
R10w,
R11w,
R12w,
R13w,
R14w,
R15w,
Al,
Bl,
Cl,
Dl,
Sil,
Dil,
Bpl,
Spl,
R8b,
R9b,
R10b,
R11b,
R12b,
R13b,
R14b,
R15b
}
impl ToString for Register {
fn to_string(&self) -> String {
format!("{:?}", self).to_lowercase()
}
}