Example #1
0
 public override void AssembleNew(Assembler.Assembler aAssembler, object aMethodInfo)
 {
     XS.Set(XSRegisters.EDX, XSRegisters.EBP, sourceDisplacement: 0x08);
     XS.Set(XSRegisters.EAX, 0);
     XS.ReadFromPortDX(XSRegisters.AX);
     XS.Push(XSRegisters.EAX);
 }
Example #2
0
 public override void AssembleNew(Assembler.Assembler aAssembler, object aMethodInfo)
 {
     XS.Set(XSRegisters.EDX, XSRegisters.EBP, sourceDisplacement: 0x08);
     //TODO: Do we need to clear rest of EAX first?
     //    MTW: technically not, as in other places, it _should_ be working with AL too..
     XS.Set(XSRegisters.EAX, 0);
     XS.ReadFromPortDX(XSRegisters.AL);
     XS.Push(XSRegisters.EAX);
 }
Example #3
0
 public override void AssembleNew(Cosmos.Assembler.Assembler aAssembler, object aMethodInfo)
 {
     new CPUx86.Push {
         DestinationReg = CPUx86.Registers.ESP
     };
 }
Example #4
0
 public Rem_Un(Cosmos.Assembler.Assembler aAsmblr)
     : base(aAsmblr)
 {
 }
Example #5
0
 public Div(Cosmos.Assembler.Assembler aAsmblr)
     : base(aAsmblr)
 {
 }
Example #6
0
 public override void UpdateAddress(Cosmos.Assembler.Assembler aAssembler, ref ulong aAddress)
 {
     base.UpdateAddress(aAssembler, ref aAddress);
 }
Example #7
0
 public Ldind_U2(Cosmos.Assembler.Assembler aAsmblr)
     : base(aAsmblr)
 {
 }
Example #8
0
 public Branch(Cosmos.Assembler.Assembler aAsmblr)
     : base(aAsmblr)
 {
 }
Example #9
0
 public Ldelem_I8(Cosmos.Assembler.Assembler aAsmblr)
     : base(aAsmblr)
 {
 }
 public Ldflda(Cosmos.Assembler.Assembler aAsmblr)
     : base(aAsmblr)
 {
 }
Example #11
0
 public Rethrow(Cosmos.Assembler.Assembler aAsmblr) : base(aAsmblr)
 {
 }
Example #12
0
 public Brtrue(Cosmos.Assembler.Assembler aAsmblr)
     : base(aAsmblr)
 {
 }
Example #13
0
 public Endfinally(Cosmos.Assembler.Assembler aAsmblr) : base(aAsmblr)
 {
 }
Example #14
0
 public Calli(Cosmos.Assembler.Assembler aAsmblr)
     : base(aAsmblr)
 {
 }
Example #15
0
 public Ldarg(Cosmos.Assembler.Assembler aAsmblr)
     : base(aAsmblr)
 {
 }
        public static void DoExecute(Cosmos.Assembler.Assembler Assembler, _MethodInfo aMethod, Type aDeclaringType, string aField, bool aDerefValue, bool aDebugEnabled, Type aTypeOnStack)
        {
            var xFieldInfo = ResolveField(aDeclaringType, aField, true);

            DoExecute(Assembler, aMethod, aDeclaringType, xFieldInfo, aDerefValue, aDebugEnabled, aTypeOnStack);
        }
Example #17
0
 public Break(Cosmos.Assembler.Assembler aAsmblr) : base(aAsmblr)
 {
 }
Example #18
0
 public Sub(Cosmos.Assembler.Assembler aAsmblr)
     : base(aAsmblr)
 {
 }
Example #19
0
 public Mul(Cosmos.Assembler.Assembler aAsmblr)
     : base(aAsmblr)
 {
 }
 public Castclass(Cosmos.Assembler.Assembler aAsmblr)
     : base(aAsmblr)
 {
 }
Example #21
0
 public override void AssembleNew(Cosmos.Assembler.Assembler aAssembler, object aMethodInfo)
 {
     XS.Halt();
 }
Example #22
0
 public override void WriteText(Cosmos.Assembler.Assembler aAssembler, TextWriter aOutput)
 {
     aOutput.Write(mMnemonic);
 }
Example #23
0
 private static BaseAssemblerElement DoResolve(Cosmos.Assembler.Assembler aAssembler, string aName)
 {
     if (!mThreadId.HasValue)
     {
         mThreadId = Thread.CurrentThread.ManagedThreadId;
     }
     else
     {
         if (mThreadId.Value != Thread.CurrentThread.ManagedThreadId)
         {
             throw new Exception("Called from multiple threads");
         }
     }
     mCacheLocker.EnterReadLock();
     try {
         if (mCache != null)
         {
             BaseAssemblerElement xTempResult;
             if (mCache.TryGetValue(aName, out xTempResult))
             {
                 return(xTempResult);
             }
         }
     } finally {
         mCacheLocker.ExitReadLock();
     }
     mCacheLocker.EnterWriteLock();
     try {
         if (mCache == null)
         {
             mCache = new Dictionary <string, BaseAssemblerElement>(StringComparer.InvariantCultureIgnoreCase);
             int xMax = aAssembler.AllAssemblerElementCount;
             for (int i = 0; i < xMax; i++)
             {
                 var xInstruction = aAssembler.GetAssemblerElement(i);
                 var xLabel       = xInstruction as Label;
                 if (xLabel != null)
                 {
                     mCache.Add(xLabel.QualifiedName, xLabel);
                 }
                 var xDataMember = xInstruction as DataMember;
                 if (xDataMember != null)
                 {
                     if (mCache.ContainsKey(xDataMember.Name))
                     {
                         Console.Write("");
                     }
                     mCache.Add(xDataMember.Name, xDataMember);
                 }
             }
         }
         BaseAssemblerElement xTempResult;
         if (mCache.TryGetValue(aName, out xTempResult))
         {
             return(xTempResult);
         }
         throw new Exception("Cannot resolve ElementReference to '" + aName + "'!");
         //foreach(var xInstruction in aAssembler.Instructions ) {
         //    var xLabel = xInstruction as Label;
         //    if(xLabel!=null) {
         //        if(aName.Equals(xLabel.Name, StringComparison.InvariantCultureIgnoreCase)) {
         //            xTempResult = xLabel;
         //            break;
         //        }
         //    }
         //}
         //if (xTempResult == null) {
         //    foreach (var xDataMember in aAssembler.DataMembers) {
         //        if (aName.Equals(xDataMember.Name, StringComparison.InvariantCultureIgnoreCase)) {
         //            xTempResult = xDataMember;
         //            break;
         //        }
         //    }
         //}
     } finally {
         mCacheLocker.ExitWriteLock();
     }
 }
Example #24
0
 public override void WriteData(Cosmos.Assembler.Assembler aAssembler, Stream aOutput)
 {
     throw new NotImplementedException("Method not implemented for instruction " + this.GetType().FullName.Substring(typeof(Instruction).Namespace.Length + 1));
 }
Example #25
0
 public Constrained(Cosmos.Assembler.Assembler aAsmblr) : base(aAsmblr)
 {
 }
Example #26
0
 public Conv_Ovf_U4(Cosmos.Assembler.Assembler aAsmblr) : base(aAsmblr)
 {
 }
Example #27
0
 public Conv_U1(Cosmos.Assembler.Assembler aAsmblr)
     : base(aAsmblr)
 {
 }
Example #28
0
 public Unbox(Cosmos.Assembler.Assembler aAsmblr)
     : base(aAsmblr)
 {
 }
Example #29
0
 public Stind_Ref(Cosmos.Assembler.Assembler aAsmblr)
     : base(aAsmblr)
 {
 }
Example #30
0
 public Stelem_I4(Cosmos.Assembler.Assembler aAsmblr)
     : base(aAsmblr)
 {
 }
Example #31
0
 public Stobj(Cosmos.Assembler.Assembler aAsmblr)
     : base(aAsmblr)
 {
 }
Example #32
0
 public Unaligned(Cosmos.Assembler.Assembler aAsmblr) : base(aAsmblr)
 {
 }
Example #33
0
 public override void AssembleNew(Assembler.Assembler aAssembler, object aMethodInfo)
 {
     XS.Set(XSRegisters.EDX, XSRegisters.EBP, sourceDisplacement: 0x0C);
     XS.Set(XSRegisters.EAX, XSRegisters.EBP, sourceDisplacement: 0x08);
     XS.WriteToPortDX(XSRegisters.EAX);
 }