Beispiel #1
0
 public override void AssembleNew(Assembler.Assembler aAssembler, object aMethodInfo)
 {
     XS.ClearDirectionFlag();
     XS.Set(XSRegisters.EDI, XSRegisters.EBP, sourceDisplacement: 0xC); //address
     XS.Set(XSRegisters.ECX, XSRegisters.EBP, sourceDisplacement: 0x8); //length
     // set EAX to value of fill (zero)
     XS.Xor(XSRegisters.EAX, XSRegisters.EAX);
     XS.ShiftRight(XSRegisters.ECX, 1);
     XS.Jump(Assembler.x86.ConditionalTestEnum.NotBelow, ".step2");
     XS.StoreByteInString();
     XS.Label(".step2");
     XS.ShiftRight(XSRegisters.ECX, 1);
     XS.Jump(Assembler.x86.ConditionalTestEnum.NotBelow, ".step3");
     XS.StoreWordInString();
     XS.Label(".step3");
     new Assembler.x86.Stos {
         Size = 32, Prefixes = Assembler.x86.InstructionPrefixes.Repeat
     };
 }
Beispiel #2
0
 public override void AssembleNew(Assembler aAssembler, object aMethodInfo)
 {
     XS.ClearDirectionFlag();
     XS.Set(EDI, EBP, sourceDisplacement: 0xC); //address
     XS.Set(ECX, EBP, sourceDisplacement: 0x8); //length
     //XS.Set(EAX, 0x1000);
     //XS.Compare(EAX, ECX);
     //XS.Jump(x86.ConditionalTestEnum.GreaterThan, ".AfterSizeCheck");
     //XS.Exchange(BX, BX);
     //XS.Label(".AfterSizeCheck");
     // set EAX to value of fill (zero)
     XS.Xor(EAX, EAX);
     XS.ShiftRight(ECX, 1);
     XS.Jump(x86.ConditionalTestEnum.NotBelow, ".step2");
     XS.StoreByteInString();
     XS.Label(".step2");
     XS.ShiftRight(ECX, 1);
     XS.Jump(x86.ConditionalTestEnum.NotBelow, ".step3");
     XS.StoreWordInString();
     XS.Label(".step3");
     new x86.Stos {
         Size = 32, Prefixes = x86.InstructionPrefixes.Repeat
     };
 }