Exemple #1
0
        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();
            }
        }
Exemple #2
0
        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());
        }
Exemple #3
0
 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);
                    }
                }
            }
        }
Exemple #5
0
        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!");
            }
        }
Exemple #6
0
 public override void WriteText(NCAsm.AsmContext aAssembler, AssemblyWriter aOutput)
 {
     aOutput.Write(mMnemonic);
     aOutput.Write(" DX, ");
     aOutput.Write(this.GetDestinationAsString());
 }
Exemple #7
0
 public override void WriteText(NCAsm.AsmContext aAssembler, AssemblyWriter aOutput)
 {
     mMnemonic = String.Intern("j" + Condition.GetMnemonic() + " ");
     base.WriteText(aAssembler, aOutput);
 }
Exemple #8
0
 public override void WriteText(NCAsm.AsmContext aAssembler, AssemblyWriter aOutput)
 {
     mMnemonic = "set" + Condition.GetMnemonic();
     base.WriteText(aAssembler, aOutput);
 }
Exemple #9
0
 public override void WriteText(NCAsm.AsmContext aAssembler, AssemblyWriter aOutput)
 {
     aOutput.Write("extern ");
     aOutput.Write(Name);
 }
Exemple #10
0
 public override void WriteText(NCAsm.AsmContext aAssembler, AssemblyWriter aOutput)
 {
     base.WriteText(aAssembler, aOutput);
     aOutput.Write(", DX");
 }
Exemple #11
0
 public override void UpdateAddress(NCAsm.AsmContext aAssembler, ref ulong aAddress)
 {
     base.UpdateAddress(aAssembler, ref aAddress);
     aAddress += 7;
 }
Exemple #12
0
        public override bool IsComplete(NCAsm.AsmContext aAssembler)
        {
            ulong xAddress;

            return(DestinationRef == null || DestinationRef.Resolve(aAssembler, out xAddress));
        }
Exemple #13
0
 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");
 }