macroassembler 1.0.5

A library for writing portable x86-64/riscv64/aarch64 assembly code in Rust
Documentation
#[macro_export]
macro_rules! for_each_gp_register {
    ($m: path) => {
        $m! {
            (eax, "rax", 0, 0),
            (ecx, "rcx", 0, 0),
            (edx, "rdx", 0, 0),
            (ebx, "rbx", 0, 1),
            (esp, "rsp", 0, 0),
            (ebp, "rbp", 0, 1),
            (esi, "rsi", 0, 0),
            (edi, "rdi", 0, 0),
            (r8,  "r8",  0, 0),
            (r9,  "r9",  0, 0),
            (r10, "r10", 0, 0),
            (r11, "r11", 0, 0),
            (r12, "r12", 0, 1),
            (r13, "r13", 0, 1),
            (r14, "r14", 0, 1),
            (r15, "r15", 0, 1),
        }
    };
}

#[macro_export]
macro_rules! for_each_fp_register {
    ($m: path) => {
        $m! {
            (xmm0, "xmm0", 0, 0),
            (xmm1, "xmm1", 0, 0),
            (xmm2, "xmm2", 0, 0),
            (xmm3, "xmm3", 0, 0),
            (xmm4, "xmm4", 0, 0),
            (xmm5, "xmm5", 0, 0),
            (xmm6, "xmm6", 0, 0),
            (xmm7, "xmm7", 0, 0),
            (xmm8, "xmm8", 0, 0),
            (xmm9, "xmm9", 0, 0),
            (xmm10, "xmm10", 0, 0),
            (xmm11, "xmm11", 0, 0),
            (xmm12, "xmm12", 0, 0),
            (xmm13, "xmm13", 0, 0),
            (xmm14, "xmm14", 0, 0),
            (xmm15, "xmm15", 0, 0),
        }
    };
}

#[macro_export]
macro_rules! for_each_sp_register {
    ($m: path) => {
        $m! {
            (eip, "eip", 0, 0),
            (eflags, "eflags", 0, 0),
        }
    };
}