public override void WriteText(NCAsm.AsmContext aAssembler, AssemblyWriter aOutput) { switch (Size) { case 32: aOutput.Write("cdq"); return; case 16: aOutput.Write("cwde"); return; case 8: aOutput.Write("cbw"); return; default: throw new NotSupportedException(); } }
public override void WriteText(NCAsm.AsmContext aAssembler, AssemblyWriter aOutput) { switch (Condition) { case FloatConditionalMoveTestEnum.Below: aOutput.Write("fcmovb"); break; case FloatConditionalMoveTestEnum.Equal: aOutput.Write("fcmove"); break; case FloatConditionalMoveTestEnum.BelowOrEqual: aOutput.Write("fcmovbe"); break; case FloatConditionalMoveTestEnum.Unordered: aOutput.Write("fcmovu"); break; case FloatConditionalMoveTestEnum.NotBelow: aOutput.Write("fcmovnb"); break; case FloatConditionalMoveTestEnum.NotEqual: aOutput.Write("fcmovne"); break; case FloatConditionalMoveTestEnum.NotBelowOrEqual: aOutput.Write("fcmovnbe"); break; case FloatConditionalMoveTestEnum.Ordered: aOutput.Write("fcmovnu"); break; } aOutput.Write(" "); aOutput.Write("ST0"); aOutput.Write(", "); aOutput.Write(this.GetSourceAsString()); }
public override void WriteData(NCAsm.AsmContext aAssembler, Stream aOutput) { if (mCorrectAddress) { if (IsRelativeJump) { if (DestinationValue.HasValue && !DestinationIsIndirect) { var xCurAddress = ActualAddress; var xOrigValue = DestinationValue.Value; DestinationValue = (ushort)(xOrigValue - xCurAddress.Value); try { base.WriteData(aAssembler, aOutput); return; } finally { DestinationValue = xOrigValue; } } } } base.WriteData(aAssembler, aOutput); }
public override void WriteText(NCAsm.AsmContext aAssembler, AssemblyWriter aOutput) { aOutput.Write(mMnemonic); String destination = this.GetDestinationAsString(); if (!destination.Equals("")) { aOutput.Write(' '); aOutput.Write(destination); string source = this.GetSourceAsString(); if (!(SourceEmpty && source.Equals(""))) { aOutput.Write(", "); aOutput.Write(source); string argument = this.GetArgumentAsString(); if (!(ArgumentEmpty && argument.Equals(""))) { aOutput.Write(", "); aOutput.Write(argument); } } } }
public override void WriteText(NCAsm.AsmContext aAssembler, AssemblyWriter aOutput) { if ((Prefixes & InstructionPrefixes.Repeat) != 0) { aOutput.Write("rep "); } switch (Size) { case 32: aOutput.Write("stosd"); return; case 16: aOutput.Write("stosw"); return; case 8: aOutput.Write("stosb"); return; default: throw new Exception("Size not supported!"); } }
public override void WriteText(NCAsm.AsmContext aAssembler, AssemblyWriter aOutput) { aOutput.Write(mMnemonic); aOutput.Write(" DX, "); aOutput.Write(this.GetDestinationAsString()); }
public override void WriteText(NCAsm.AsmContext aAssembler, AssemblyWriter aOutput) { mMnemonic = String.Intern("j" + Condition.GetMnemonic() + " "); base.WriteText(aAssembler, aOutput); }
public override void WriteText(NCAsm.AsmContext aAssembler, AssemblyWriter aOutput) { mMnemonic = "set" + Condition.GetMnemonic(); base.WriteText(aAssembler, aOutput); }
public override void WriteText(NCAsm.AsmContext aAssembler, AssemblyWriter aOutput) { aOutput.Write("extern "); aOutput.Write(Name); }
public override void WriteText(NCAsm.AsmContext aAssembler, AssemblyWriter aOutput) { base.WriteText(aAssembler, aOutput); aOutput.Write(", DX"); }
public override void UpdateAddress(NCAsm.AsmContext aAssembler, ref ulong aAddress) { base.UpdateAddress(aAssembler, ref aAddress); aAddress += 7; }
public override bool IsComplete(NCAsm.AsmContext aAssembler) { ulong xAddress; return(DestinationRef == null || DestinationRef.Resolve(aAssembler, out xAddress)); }
public override void WriteText(NCAsm.AsmContext aAssembler, AssemblyWriter aOutput) { //TODO: In base have a property that has the opcode from above and we can reuse it. aOutput.Write("Int " + DestinationValue.Value.ToString("X2") + "h"); }