luaur-code-gen 0.1.0

Native (A64/X64) code generation for Luau (Rust).
Documentation
use crate::enums::size_x_64::SizeX64;
use crate::records::assembly_builder_x_64::AssemblyBuilderX64;
use crate::records::register_x_64::RegisterX64;

impl AssemblyBuilderX64 {
    pub fn get_register_name(&self, reg: RegisterX64) -> &'static str {
        static NAMES: [[&str; 16]; 7] = [
            [
                "rip", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
            ],
            [
                "al", "cl", "dl", "bl", "spl", "bpl", "sil", "dil", "r8b", "r9b", "r10b", "r11b",
                "r12b", "r13b", "r14b", "r15b",
            ],
            [
                "ax", "cx", "dx", "bx", "sp", "bp", "si", "di", "r8w", "r9w", "r10w", "r11w",
                "r12w", "r13w", "r14w", "r15w",
            ],
            [
                "eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi", "r8d", "r9d", "r10d",
                "r11d", "r12d", "r13d", "r14d", "r15d",
            ],
            [
                "rax", "rcx", "rdx", "rbx", "rsp", "rbp", "rsi", "rdi", "r8", "r9", "r10", "r11",
                "r12", "r13", "r14", "r15",
            ],
            [
                "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6", "xmm7", "xmm8", "xmm9",
                "xmm10", "xmm11", "xmm12", "xmm13", "xmm14", "xmm15",
            ],
            [
                "ymm0", "ymm1", "ymm2", "ymm3", "ymm4", "ymm5", "ymm6", "ymm7", "ymm8", "ymm9",
                "ymm10", "ymm11", "ymm12", "ymm13", "ymm14", "ymm15",
            ],
        ];

        let size_index = match reg.size() {
            SizeX64::none => 0,
            SizeX64::byte => 1,
            SizeX64::word => 2,
            SizeX64::dword => 3,
            SizeX64::qword => 4,
            SizeX64::xmmword => 5,
            SizeX64::ymmword => 6,
        };
        let index = reg.index() as usize;

        NAMES[size_index][index]
    }
}