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! {
            (x0, "x0", 1, 0),
            (x1, "x1", 1, 0),
            (x2, "x2", 1, 1),
            (x3, "x3", 1, 0),
            (x4, "x4", 1, 0),
            (x5, "x5", 0, 0),
            (x6, "x6", 0, 0),
            (x7, "x7", 0, 0),
            (x8, "x8", 1, 1),
            (x9, "x9", 0, 1),
            (x10, "x10", 0, 0),
            (x11, "x11", 0, 0),
            (x12, "x12", 0, 0),
            (x13, "x13", 0, 0),
            (x14, "x14", 0, 0),
            (x15, "x15", 0, 0),
            (x16, "x16", 0, 0),
            (x17, "x17", 0, 0),
            (x18, "x18", 0, 1),
            (x19, "x19", 0, 1),
            (x20, "x20", 0, 1),
            (x21, "x21", 0, 1),
            (x22, "x22", 0, 1),
            (x23, "x23", 0, 1),
            (x24, "x24", 0, 1),
            (x25, "x25", 0, 1),
            (x26, "x26", 0, 1),
            (x27, "x27", 0, 1),
            (x28, "x28", 0, 1),
            (x29, "x29", 0, 1),
            (x30, "x30", 0, 0),
            (x31, "x31", 0, 0),
        }
    };
}

#[macro_export]
macro_rules! for_each_fp_register {
    ($m: path) => {
        $m! {
            (f0, "f0", 0, 0),
            (f1, "f1", 0, 0),
            (f2, "f2", 0, 0),
            (f3, "f3", 0, 0),
            (f4, "f4", 0, 0),
            (f5, "f5", 0, 0),
            (f6, "f6", 0, 0),
            (f7, "f7", 0, 0),
            (f8, "f8", 0, 1),
            (f9, "f9", 0, 1),
            (f10, "f10", 0, 0),
            (f11, "f11", 0, 0),
            (f12, "f12", 0, 0),
            (f13, "f13", 0, 0),
            (f14, "f14", 0, 0),
            (f15, "f15", 0, 0),
            (f16, "f16", 0, 0),
            (f17, "f17", 0, 0),
            (f18, "f18", 0, 1),
            (f19, "f19", 0, 1),
            (f20, "f20", 0, 1),
            (f21, "f21", 0, 1),
            (f22, "f22", 0, 1),
            (f23, "f23", 0, 1),
            (f24, "f24", 0, 1),
            (f25, "f25", 0, 1),
            (f26, "f26", 0, 1),
            (f27, "f27", 0, 1),
            (f28, "f28", 0, 0),
            (f29, "f29", 0, 0),
            (f30, "f30", 0, 0),
            (f31, "f31", 0, 0),
        }
    };
}

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

#[macro_export]
macro_rules! for_each_register_alias {
    ($m: path) => {
        $m! {
            (zero, "zero", x0),
            (ra, "ra", x1),
            (sp, "sp", x2),
            (gp, "gp", x3),
            (tp, "tp", x4),
            (fp, "fp", x8)
        }
    };
}