static Registers() { eax = new Intel32AccRegister("eax", 0, 8, 16, 20); ecx = new Intel32AccRegister("ecx", 1, 9, 17, 21); edx = new Intel32AccRegister("edx", 2, 10, 18, 22); ebx = new Intel32AccRegister("ebx", 3, 11, 19, 23); esp = new Intel32Register("esp", 4, 12, -1, -1); ebp = new Intel32Register("ebp", 5, 13, -1, -1); esi = new Intel32Register("esi", 6, 14, -1, -1); edi = new Intel32Register("edi", 7, 15, -1, -1); ax = new Intel16AccRegister("ax", 8, 0, 16, 20); cx = new Intel16AccRegister("cx", 9, 1, 17, 21); dx = new Intel16AccRegister("dx", 10, 2, 18, 22); bx = new Intel16AccRegister("bx", 11, 3, 19, 23); sp = new Intel16Register("sp", 12, 4, -1, -1); bp = new Intel16Register("bp", 13, 5, -1, -1); si = new Intel16Register("si", 14, 6, -1, -1); di = new Intel16Register("di", 15, 7, -1, -1); al = new IntelLoByteRegister("al", 16, 0, 8, 16, 20); cl = new IntelLoByteRegister("cl", 17, 1, 9, 17, 21); dl = new IntelLoByteRegister("dl", 18, 2, 10, 18, 22); bl = new IntelLoByteRegister("bl", 19, 3, 11, 19, 23); ah = new IntelHiByteRegister("ah", 20, 0, 8, 16, 20); ch = new IntelHiByteRegister("ch", 21, 1, 9, 17, 21); dh = new IntelHiByteRegister("dh", 22, 2, 10, 18, 22); bh = new IntelHiByteRegister("bh", 23, 3, 11, 19, 23); es = new SegmentRegister("es", 24); cs = new SegmentRegister("cs", 25); ss = new SegmentRegister("ss", 26); ds = new SegmentRegister("ds", 27); fs = new SegmentRegister("fs", 28); gs = new SegmentRegister("gs", 29); S = new FlagRegister("S", 32); C = new FlagRegister("C", 33); Z = new FlagRegister("Z", 34); D = new FlagRegister("D", 35); O = new FlagRegister("O", 36); P = new FlagRegister("P", 37); FPUF = new RegisterStorage("FPUF", 38, PrimitiveType.Byte); FPST = new RegisterStorage("FPST", 38, PrimitiveType.Byte); rax = new Intel64AccRegister("rax", 0, 0, 8, 16, 20); rcx = new Intel64AccRegister("rcx", 1, 1, 9, 17, 21); rdx = new Intel64AccRegister("rdx", 2, 2, 10, 18, 22); rbx = new Intel64AccRegister("rbx", 3, 3, 11, 19, 23); rsp = new Intel64Register("rsp", 4, 12, -1, -1); rbp = new Intel64Register("rbp", 5, 13, -1, -1); rsi = new Intel64Register("rsi", 6, 14, -1, -1); rdi = new Intel64Register("rdi", 7, 15, -1, -1); r8 = new Intel64Register("r8", 8, 12, -1, -1); r9 = new Intel64Register("r9", 9, 13, -1, -1); r10 = new Intel64Register("r10", 10, 14, -1, -1); r11 = new Intel64Register("r11", 11, 15, -1, -1); r12 = new Intel64Register("r12", 12, 15, -1, -1); r13 = new Intel64Register("r13", 13, 15, -1, -1); r14 = new Intel64Register("r14", 14, 15, -1, -1); r15 = new Intel64Register("r15", 15, 15, -1, -1); r8d = new Intel64Register("r8d", 8, 12, -1, -1); r9d = new Intel64Register("r9d", 9, 13, -1, -1); r10d = new Intel64Register("r10d", 10, 14, -1, -1); r11d = new Intel64Register("r11d", 11, 15, -1, -1); r12d = new Intel64Register("r12d", 12, 15, -1, -1); r13d = new Intel64Register("r13d", 13, 15, -1, -1); r14d = new Intel64Register("r14d", 14, 15, -1, -1); r15d = new Intel64Register("r15d", 15, 15, -1, -1); r8w = new Intel32Register("r8w", 8, 12, -1, -1); r9w = new Intel32Register("r9w", 9, 13, -1, -1); r10w = new Intel32Register("r10w", 10, 14, -1, -1); r11w = new Intel32Register("r11w", 11, 15, -1, -1); r12w = new Intel32Register("r12w", 12, 15, -1, -1); r13w = new Intel32Register("r13w", 13, 15, -1, -1); r14w = new Intel32Register("r14w", 14, 15, -1, -1); r15w = new Intel32Register("r15w", 15, 15, -1, -1); spl = new IntelLoByteRegister("spl", 8, 4, 12, -1, -1); bpl = new IntelLoByteRegister("bpl", 9, 5, 13, -1, -1); sil = new IntelLoByteRegister("sil", 8, 6, 14, -1, -1); dil = new IntelLoByteRegister("dil", 9, 7, 15, -1, -1); r8b = new IntelLoByteRegister("r8b", 8, 12, -1, -1, -1); r9b = new IntelLoByteRegister("r9b", 9, 13, -1, -1, -1); r10b = new IntelLoByteRegister("r10b", 10, 14, -1, -1, -1); r11b = new IntelLoByteRegister("r11b", 11, 15, -1, -1, -1); r12b = new IntelLoByteRegister("r12b", 12, 15, -1, -1, -1); r13b = new IntelLoByteRegister("r13b", 13, 15, -1, -1, -1); r14b = new IntelLoByteRegister("r14b", 14, 15, -1, -1, -1); r15b = new IntelLoByteRegister("r15b", 15, 15, -1, -1, -1); mm0 = new RegisterStorage("mm0", 0, PrimitiveType.Word64); mm1 = new RegisterStorage("mm1", 1, PrimitiveType.Word64); mm2 = new RegisterStorage("mm2", 2, PrimitiveType.Word64); mm3 = new RegisterStorage("mm3", 3, PrimitiveType.Word64); mm4 = new RegisterStorage("mm4", 4, PrimitiveType.Word64); mm5 = new RegisterStorage("mm5", 5, PrimitiveType.Word64); mm6 = new RegisterStorage("mm6", 6, PrimitiveType.Word64); mm7 = new RegisterStorage("mm7", 7, PrimitiveType.Word64); mm8 = new RegisterStorage("mm8", 8, PrimitiveType.Word64); mm9 = new RegisterStorage("mm9", 9, PrimitiveType.Word64); mm10 = new RegisterStorage("mm10", 10, PrimitiveType.Word64); mm11 = new RegisterStorage("mm11", 11, PrimitiveType.Word64); mm12 = new RegisterStorage("mm12", 12, PrimitiveType.Word64); mm13 = new RegisterStorage("mm13", 13, PrimitiveType.Word64); mm14 = new RegisterStorage("mm14", 14, PrimitiveType.Word64); mm15 = new RegisterStorage("mm15", 15, PrimitiveType.Word64); xmm0 = new RegisterStorage("xmm0", 0, PrimitiveType.Word128); xmm1 = new RegisterStorage("xmm1", 1, PrimitiveType.Word128); xmm2 = new RegisterStorage("xmm2", 2, PrimitiveType.Word128); xmm3 = new RegisterStorage("xmm3", 3, PrimitiveType.Word128); xmm4 = new RegisterStorage("xmm4", 4, PrimitiveType.Word128); xmm5 = new RegisterStorage("xmm5", 5, PrimitiveType.Word128); xmm6 = new RegisterStorage("xmm6", 6, PrimitiveType.Word128); xmm7 = new RegisterStorage("xmm7", 7, PrimitiveType.Word128); xmm8 = new RegisterStorage("xmm8", 8, PrimitiveType.Word128); xmm9 = new RegisterStorage("xmm9", 9, PrimitiveType.Word128); xmm10 = new RegisterStorage("xmm10", 10, PrimitiveType.Word128); xmm11 = new RegisterStorage("xmm11", 11, PrimitiveType.Word128); xmm12 = new RegisterStorage("xmm12", 12, PrimitiveType.Word128); xmm13 = new RegisterStorage("xmm13", 13, PrimitiveType.Word128); xmm14 = new RegisterStorage("xmm14", 14, PrimitiveType.Word128); xmm15 = new RegisterStorage("xmm15", 15, PrimitiveType.Word128); rip = new RegisterStorage("rip", 23, PrimitiveType.Pointer64); All = new RegisterStorage[] { eax, ecx, edx, ebx, esp, ebp, esi, edi, ax , cx , dx , bx , sp , bp , si , di , // 16 al , cl , dl , bl , ah , ch , dh , bh , es , cs , ss , ds , fs , gs , null, null, // 32 S , C , Z , D , O , P, FPUF, null, // 40 rax, rcx, rdx, rbx, rsp, rbp, rsi, rdi, r8, r9, r10, r11, r12, r13, r14, r15, r8d, r9d, r10d, r11d, r12d, r13d, r14d, r15d, r8w, r9w, r10w, r11w, r12w, r13w, r14w, r15w, spl, bpl, sil, dil, r8b, r9b, r10b, r11b, r12b, r13b, r14b, r15b, mm0 , mm1 , mm2 , mm3 , mm4 , mm5 , mm6 , mm7 , mm8 , mm9 , mm10, mm11, mm12, mm13, mm14, mm15, xmm0 , xmm1 , xmm2 , xmm3 , xmm4 , xmm5 , xmm6 , xmm7 , xmm8 , xmm9 , xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, }; }
static Registers() { eax = new Intel32AccRegister("eax", 0, 8, 16, 20); ecx = new Intel32AccRegister("ecx", 1, 9, 17, 21); edx = new Intel32AccRegister("edx", 2, 10, 18, 22); ebx = new Intel32AccRegister("ebx", 3, 11, 19, 23); esp = new Intel32Register("esp", 4, 12, -1, -1); ebp = new Intel32Register("ebp", 5, 13, -1, -1); esi = new Intel32Register("esi", 6, 14, -1, -1); edi = new Intel32Register("edi", 7, 15, -1, -1); ax = new Intel16AccRegister("ax", 8, 0, 16, 20); cx = new Intel16AccRegister("cx", 9, 1, 17, 21); dx = new Intel16AccRegister("dx", 10, 2, 18, 22); bx = new Intel16AccRegister("bx", 11, 3, 19, 23); sp = new Intel16Register("sp", 12, 4, -1, -1); bp = new Intel16Register("bp", 13, 5, -1, -1); si = new Intel16Register("si", 14, 6, -1, -1); di = new Intel16Register("di", 15, 7, -1, -1); al = new IntelLoByteRegister("al", 16, 0, 8, 16, 20); cl = new IntelLoByteRegister("cl", 17, 1, 9, 17, 21); dl = new IntelLoByteRegister("dl", 18, 2, 10, 18, 22); bl = new IntelLoByteRegister("bl", 19, 3, 11, 19, 23); ah = new IntelHiByteRegister("ah", 20, 0, 8, 16, 20); ch = new IntelHiByteRegister("ch", 21, 1, 9, 17, 21); dh = new IntelHiByteRegister("dh", 22, 2, 10, 18, 22); bh = new IntelHiByteRegister("bh", 23, 3, 11, 19, 23); es = new SegmentRegister("es", 24); cs = new SegmentRegister("cs", 25); ss = new SegmentRegister("ss", 26); ds = new SegmentRegister("ds", 27); fs = new SegmentRegister("fs", 28); gs = new SegmentRegister("gs", 29); S = new FlagRegister("S", 32); C = new FlagRegister("C", 33); Z = new FlagRegister("Z", 34); D = new FlagRegister("D", 35); O = new FlagRegister("O", 36); P = new FlagRegister("P", 37); FPUF = new RegisterStorage("FPUF", 38, PrimitiveType.Byte); FPST = new RegisterStorage("FPST", 38, PrimitiveType.Byte); rax = new Intel64AccRegister("rax", 0, 0, 8, 16, 20); rcx = new Intel64AccRegister("rcx", 1, 1, 9, 17, 21); rdx = new Intel64AccRegister("rdx", 2, 2, 10, 18, 22); rbx = new Intel64AccRegister("rbx", 3, 3, 11, 19, 23); rsp = new Intel64Register("rsp", 4, 12, -1, -1); rbp = new Intel64Register("rbp", 5, 13, -1, -1); rsi = new Intel64Register("rsi", 6, 14, -1, -1); rdi = new Intel64Register("rdi", 7, 15, -1, -1); r8 = new Intel64Register("r8", 8, 12, -1, -1); r9 = new Intel64Register("r9", 9, 13, -1, -1); r10 = new Intel64Register("r10", 10, 14, -1, -1); r11 = new Intel64Register("r11", 11, 15, -1, -1); r12 = new Intel64Register("r12", 12, 15, -1, -1); r13 = new Intel64Register("r13", 13, 15, -1, -1); r14 = new Intel64Register("r14", 14, 15, -1, -1); r15 = new Intel64Register("r15", 15, 15, -1, -1); r8d = new Intel64Register("r8d", 8, 12, -1, -1); r9d = new Intel64Register("r9d", 9, 13, -1, -1); r10d = new Intel64Register("r10d", 10, 14, -1, -1); r11d = new Intel64Register("r11d", 11, 15, -1, -1); r12d = new Intel64Register("r12d", 12, 15, -1, -1); r13d = new Intel64Register("r13d", 13, 15, -1, -1); r14d = new Intel64Register("r14d", 14, 15, -1, -1); r15d = new Intel64Register("r15d", 15, 15, -1, -1); r8w = new Intel32Register("r8w", 8, 12, -1, -1); r9w = new Intel32Register("r9w", 9, 13, -1, -1); r10w = new Intel32Register("r10w", 10, 14, -1, -1); r11w = new Intel32Register("r11w", 11, 15, -1, -1); r12w = new Intel32Register("r12w", 12, 15, -1, -1); r13w = new Intel32Register("r13w", 13, 15, -1, -1); r14w = new Intel32Register("r14w", 14, 15, -1, -1); r15w = new Intel32Register("r15w", 15, 15, -1, -1); spl = new IntelLoByteRegister("spl", 8, 4, 12, -1, -1); bpl = new IntelLoByteRegister("bpl", 9, 5, 13, -1, -1); sil = new IntelLoByteRegister("sil", 8, 6, 14, -1, -1); dil = new IntelLoByteRegister("dil", 9, 7, 15, -1, -1); r8b = new IntelLoByteRegister("r8b", 8, 12, -1, -1, -1); r9b = new IntelLoByteRegister("r9b", 9, 13, -1, -1, -1); r10b = new IntelLoByteRegister("r10b", 10, 14, -1, -1, -1); r11b = new IntelLoByteRegister("r11b", 11, 15, -1, -1, -1); r12b = new IntelLoByteRegister("r12b", 12, 15, -1, -1, -1); r13b = new IntelLoByteRegister("r13b", 13, 15, -1, -1, -1); r14b = new IntelLoByteRegister("r14b", 14, 15, -1, -1, -1); r15b = new IntelLoByteRegister("r15b", 15, 15, -1, -1, -1); mm0 = new RegisterStorage("mm0", 0, PrimitiveType.Word64); mm1 = new RegisterStorage("mm1", 1, PrimitiveType.Word64); mm2 = new RegisterStorage("mm2", 2, PrimitiveType.Word64); mm3 = new RegisterStorage("mm3", 3, PrimitiveType.Word64); mm4 = new RegisterStorage("mm4", 4, PrimitiveType.Word64); mm5 = new RegisterStorage("mm5", 5, PrimitiveType.Word64); mm6 = new RegisterStorage("mm6", 6, PrimitiveType.Word64); mm7 = new RegisterStorage("mm7", 7, PrimitiveType.Word64); mm8 = new RegisterStorage("mm8", 8, PrimitiveType.Word64); mm9 = new RegisterStorage("mm9", 9, PrimitiveType.Word64); mm10 = new RegisterStorage("mm10", 10, PrimitiveType.Word64); mm11 = new RegisterStorage("mm11", 11, PrimitiveType.Word64); mm12 = new RegisterStorage("mm12", 12, PrimitiveType.Word64); mm13 = new RegisterStorage("mm13", 13, PrimitiveType.Word64); mm14 = new RegisterStorage("mm14", 14, PrimitiveType.Word64); mm15 = new RegisterStorage("mm15", 15, PrimitiveType.Word64); xmm0 = new RegisterStorage("xmm0", 0, PrimitiveType.Word128); xmm1 = new RegisterStorage("xmm1", 1, PrimitiveType.Word128); xmm2 = new RegisterStorage("xmm2", 2, PrimitiveType.Word128); xmm3 = new RegisterStorage("xmm3", 3, PrimitiveType.Word128); xmm4 = new RegisterStorage("xmm4", 4, PrimitiveType.Word128); xmm5 = new RegisterStorage("xmm5", 5, PrimitiveType.Word128); xmm6 = new RegisterStorage("xmm6", 6, PrimitiveType.Word128); xmm7 = new RegisterStorage("xmm7", 7, PrimitiveType.Word128); xmm8 = new RegisterStorage("xmm8", 8, PrimitiveType.Word128); xmm9 = new RegisterStorage("xmm9", 9, PrimitiveType.Word128); xmm10 = new RegisterStorage("xmm10", 10, PrimitiveType.Word128); xmm11 = new RegisterStorage("xmm11", 11, PrimitiveType.Word128); xmm12 = new RegisterStorage("xmm12", 12, PrimitiveType.Word128); xmm13 = new RegisterStorage("xmm13", 13, PrimitiveType.Word128); xmm14 = new RegisterStorage("xmm14", 14, PrimitiveType.Word128); xmm15 = new RegisterStorage("xmm15", 15, PrimitiveType.Word128); rip = new RegisterStorage("rip", 23, PrimitiveType.Pointer64); All = new RegisterStorage[] { eax, ecx, edx, ebx, esp, ebp, esi, edi, ax, cx, dx, bx, sp, bp, si, di, // 16 al, cl, dl, bl, ah, ch, dh, bh, es, cs, ss, ds, fs, gs, null, null, // 32 S, C, Z, D, O, P, FPUF, null, // 40 rax, rcx, rdx, rbx, rsp, rbp, rsi, rdi, r8, r9, r10, r11, r12, r13, r14, r15, r8d, r9d, r10d, r11d, r12d, r13d, r14d, r15d, r8w, r9w, r10w, r11w, r12w, r13w, r14w, r15w, spl, bpl, sil, dil, r8b, r9b, r10b, r11b, r12b, r13b, r14b, r15b, mm0, mm1, mm2, mm3, mm4, mm5, mm6, mm7, mm8, mm9, mm10, mm11, mm12, mm13, mm14, mm15, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15, }; }