diff --git a/source/XSharp/XSharp/Assembler/Gen1/x86/Registers.cs b/source/XSharp/XSharp/Assembler/Gen1/x86/Registers.cs index 61733c4..4017d70 100644 --- a/source/XSharp/XSharp/Assembler/Gen1/x86/Registers.cs +++ b/source/XSharp/XSharp/Assembler/Gen1/x86/Registers.cs @@ -41,6 +41,14 @@ public enum RegistersEnum: byte CR2, CR3, CR4, + MM0, + MM1, + MM2, + MM3, + MM4, + MM5, + MM6, + MM7, XMM0, XMM1, XMM2, diff --git a/source/XSharp/XSharp/Gen1/XSRegisters.cs b/source/XSharp/XSharp/Gen1/XSRegisters.cs index fa75cb8..1250ba6 100644 --- a/source/XSharp/XSharp/Gen1/XSRegisters.cs +++ b/source/XSharp/XSharp/Gen1/XSRegisters.cs @@ -13,6 +13,7 @@ public enum RegisterSize : byte Short16 = 16, Int32 = 32, Long64 = 64, + MM = 64, FPU = 128, XMM = 128 } @@ -85,6 +86,13 @@ public RegisterFPU(string name, RegistersEnum regEnum) : base(name, regEnum, Reg } } + public class RegisterMM : Register + { + public RegisterMM(string name, RegistersEnum regEnum) : base(name, regEnum, RegisterSize.MM) + { + } + } + public class RegisterXMM : Register { public RegisterXMM(string name, RegistersEnum regEnum) : base(name, regEnum, RegisterSize.XMM) @@ -141,6 +149,15 @@ public RegisterSegment(string name, RegistersEnum regEnum) : base(name, regEnum, public static readonly RegisterFPU ST6 = new RegisterFPU(nameof(ST6), RegistersEnum.ST6); public static readonly RegisterFPU ST7 = new RegisterFPU(nameof(ST7), RegistersEnum.ST7); + public static readonly RegisterMM MM0 = new RegisterMM(nameof(MM0), RegistersEnum.MM0); + public static readonly RegisterMM MM1 = new RegisterMM(nameof(MM1), RegistersEnum.MM1); + public static readonly RegisterMM MM2 = new RegisterMM(nameof(MM2), RegistersEnum.MM2); + public static readonly RegisterMM MM3 = new RegisterMM(nameof(MM3), RegistersEnum.MM3); + public static readonly RegisterMM MM4 = new RegisterMM(nameof(MM4), RegistersEnum.MM4); + public static readonly RegisterMM MM5 = new RegisterMM(nameof(MM5), RegistersEnum.MM5); + public static readonly RegisterMM MM6 = new RegisterMM(nameof(MM6), RegistersEnum.MM6); + public static readonly RegisterMM MM7 = new RegisterMM(nameof(MM7), RegistersEnum.MM7); + public static readonly RegisterXMM XMM0 = new RegisterXMM(nameof(XMM0), RegistersEnum.XMM0); public static readonly RegisterXMM XMM1 = new RegisterXMM(nameof(XMM1), RegistersEnum.XMM1); public static readonly RegisterXMM XMM2 = new RegisterXMM(nameof(XMM2), RegistersEnum.XMM2);