Пример #1
0
        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,
            };
        }
Пример #2
0
        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,
            };
        }