Skip to main content

luaur_code_gen/methods/
assembly_builder_x_64_get_register_name.rs

1use crate::enums::size_x_64::SizeX64;
2use crate::records::assembly_builder_x_64::AssemblyBuilderX64;
3use crate::records::register_x_64::RegisterX64;
4
5impl AssemblyBuilderX64 {
6    pub fn get_register_name(&self, reg: RegisterX64) -> &'static str {
7        static NAMES: [[&str; 16]; 7] = [
8            [
9                "rip", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
10            ],
11            [
12                "al", "cl", "dl", "bl", "spl", "bpl", "sil", "dil", "r8b", "r9b", "r10b", "r11b",
13                "r12b", "r13b", "r14b", "r15b",
14            ],
15            [
16                "ax", "cx", "dx", "bx", "sp", "bp", "si", "di", "r8w", "r9w", "r10w", "r11w",
17                "r12w", "r13w", "r14w", "r15w",
18            ],
19            [
20                "eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi", "r8d", "r9d", "r10d",
21                "r11d", "r12d", "r13d", "r14d", "r15d",
22            ],
23            [
24                "rax", "rcx", "rdx", "rbx", "rsp", "rbp", "rsi", "rdi", "r8", "r9", "r10", "r11",
25                "r12", "r13", "r14", "r15",
26            ],
27            [
28                "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6", "xmm7", "xmm8", "xmm9",
29                "xmm10", "xmm11", "xmm12", "xmm13", "xmm14", "xmm15",
30            ],
31            [
32                "ymm0", "ymm1", "ymm2", "ymm3", "ymm4", "ymm5", "ymm6", "ymm7", "ymm8", "ymm9",
33                "ymm10", "ymm11", "ymm12", "ymm13", "ymm14", "ymm15",
34            ],
35        ];
36
37        let size_index = match reg.size() {
38            SizeX64::none => 0,
39            SizeX64::byte => 1,
40            SizeX64::word => 2,
41            SizeX64::dword => 3,
42            SizeX64::qword => 4,
43            SizeX64::xmmword => 5,
44            SizeX64::ymmword => 6,
45        };
46        let index = reg.index() as usize;
47
48        NAMES[size_index][index]
49    }
50}