public CPUx86() { EIP = new Register32Bit("EIP", 0, RegisterType.InstructionPointer, false); EFLAGS = new FlagsRegister(); EAX = new GeneralPurposeRegister("EAX", 0); EBX = new GeneralPurposeRegister("EBX", 1); ECX = new GeneralPurposeRegister("ECX", 2); EDX = new GeneralPurposeRegister("EDX", 3); ESP = new GeneralPurposeRegister("ESP", 4); EBP = new GeneralPurposeRegister("EBP", 5); ESI = new GeneralPurposeRegister("ESI", 6); EDI = new GeneralPurposeRegister("EDI", 7); CR0 = new CR0(); CR2 = new ControlRegister("CR2", 2); CR3 = new ControlRegister("CR3", 3); CR4 = new ControlRegister("CR3", 4); AX = new Legacy16BitRegister("AX", EAX); BX = new Legacy16BitRegister("BX", EBX); CX = new Legacy16BitRegister("CX", ECX); DX = new Legacy16BitRegister("DX", EDX); SI = new Legacy16BitRegister("SI", ESI); DI = new Legacy16BitRegister("DI", EDI); BP = new Legacy16BitRegister("BP", EBP); AL = new Legacy8BitLowRegister("AL", EAX); BL = new Legacy8BitLowRegister("BL", EBX); CL = new Legacy8BitLowRegister("CL", ECX); DL = new Legacy8BitLowRegister("DL", EDX); AH = new Legacy8BitHighRegister("AH", EAX); BH = new Legacy8BitHighRegister("BH", EBX); CH = new Legacy8BitHighRegister("CH", ECX); DH = new Legacy8BitHighRegister("DH", EDX); XMM0 = new RegisterFloatingPoint("XMM0", 0, RegisterType.FloatingPoint); XMM1 = new RegisterFloatingPoint("XMM1", 1, RegisterType.FloatingPoint); XMM2 = new RegisterFloatingPoint("XMM2", 2, RegisterType.FloatingPoint); XMM3 = new RegisterFloatingPoint("XMM3", 3, RegisterType.FloatingPoint); XMM4 = new RegisterFloatingPoint("XMM4", 4, RegisterType.FloatingPoint); XMM5 = new RegisterFloatingPoint("XMM5", 5, RegisterType.FloatingPoint); XMM6 = new RegisterFloatingPoint("XMM6", 6, RegisterType.FloatingPoint); XMM7 = new RegisterFloatingPoint("XMM7", 7, RegisterType.FloatingPoint); ST0 = new RegisterFloatingPoint("ST0", -1, RegisterType.FloatingPoint); CS = new SegmentRegister("CS", 0); DS = new SegmentRegister("DS", 1); ES = new SegmentRegister("ES", 2); FS = new SegmentRegister("FS", 3); GS = new SegmentRegister("GS", 4); SS = new SegmentRegister("SS", 5); Reset(); }