diff --git a/source/Indy.IL2CPU/Assembler/x86/ShiftLeft.cs b/source/Indy.IL2CPU/Assembler/x86/ShiftLeft.cs index ff343ef78..8c39ce48f 100644 --- a/source/Indy.IL2CPU/Assembler/x86/ShiftLeft.cs +++ b/source/Indy.IL2CPU/Assembler/x86/ShiftLeft.cs @@ -12,9 +12,10 @@ namespace Indy.IL2CPU.Assembler.X86 { NeedsModRMByte=true, InitialModRMByteValue = 0xE0, OperandSizeByte=0, - //ReverseRegisters = true, + ReverseRegisters = true, DestinationReg=Guid.Empty, - SourceReg=Registers.CL + SourceReg=Registers.CL, + SourceRegByte=-1 }); // register by CL aData.EncodingOptions.Add(new InstructionData.InstructionEncodingOption { OpCode = new byte[] { 0xD2 }, diff --git a/source/Playgrounds/Matthijs/TestApp/Program.cs b/source/Playgrounds/Matthijs/TestApp/Program.cs index 5e49e6988..2cf1b2d0b 100644 --- a/source/Playgrounds/Matthijs/TestApp/Program.cs +++ b/source/Playgrounds/Matthijs/TestApp/Program.cs @@ -12,15 +12,14 @@ namespace TestApp { class Program { class Renderer : Y86 { public void DoRender() { - new global::Indy.IL2CPU.Assembler.X86.ShiftLeft { SourceValue = 30, DestinationValue = 65, DestinationIsIndirect = true, Size = 8 }; - new global::Indy.IL2CPU.Assembler.X86.ShiftLeft { SourceValue = 30, DestinationValue = 650, DestinationIsIndirect = true, Size = 8 }; - new global::Indy.IL2CPU.Assembler.X86.ShiftLeft { SourceValue = 30, DestinationValue = 650000, DestinationIsIndirect = true, Size = 8 }; - new global::Indy.IL2CPU.Assembler.X86.ShiftLeft { SourceValue = 300, DestinationValue = 65, DestinationIsIndirect = true, Size = 8 }; - new global::Indy.IL2CPU.Assembler.X86.ShiftLeft { SourceValue = 300, DestinationValue = 650, DestinationIsIndirect = true, Size = 8 }; - new global::Indy.IL2CPU.Assembler.X86.ShiftLeft { SourceValue = 300, DestinationValue = 650000, DestinationIsIndirect = true, Size = 8 }; - new global::Indy.IL2CPU.Assembler.X86.ShiftLeft { SourceValue = 300000, DestinationValue = 65, DestinationIsIndirect = true, Size = 8 }; - new global::Indy.IL2CPU.Assembler.X86.ShiftLeft { SourceValue = 300000, DestinationValue = 650, DestinationIsIndirect = true, Size = 8 }; - new global::Indy.IL2CPU.Assembler.X86.ShiftLeft { SourceValue = 300000, DestinationValue = 650000, DestinationIsIndirect = true, Size = 8 }; + new global::Indy.IL2CPU.Assembler.X86.ShiftLeft { SourceReg = Registers.CL, DestinationReg = Registers.AH, Size = 8 }; + new global::Indy.IL2CPU.Assembler.X86.ShiftLeft { SourceReg = Registers.CL, DestinationReg = Registers.AL, Size = 8 }; + new global::Indy.IL2CPU.Assembler.X86.ShiftLeft { SourceReg = Registers.CL, DestinationReg = Registers.BH, Size = 8 }; + new global::Indy.IL2CPU.Assembler.X86.ShiftLeft { SourceReg = Registers.CL, DestinationReg = Registers.BL, Size = 8 }; + new global::Indy.IL2CPU.Assembler.X86.ShiftLeft { SourceReg = Registers.CL, DestinationReg = Registers.CH, Size = 8 }; + new global::Indy.IL2CPU.Assembler.X86.ShiftLeft { SourceReg = Registers.CL, DestinationReg = Registers.CL, Size = 8 }; + new global::Indy.IL2CPU.Assembler.X86.ShiftLeft { SourceReg = Registers.CL, DestinationReg = Registers.DH, Size = 8 }; + new global::Indy.IL2CPU.Assembler.X86.ShiftLeft { SourceReg = Registers.CL, DestinationReg = Registers.DL, Size = 8 }; } } static void Main(string[] args) {