public bool Match(MemberPointerSelector mps) { // c = mps.MemberPtr as Constant; this.mps = mps; return false; //return (c != null); //$REVIEW: disabled. Perhaps we don't want to do this transformation before we detect registerpairs. }
public override void VisitMemberPointerSelector(MemberPointerSelector mps) { mps.BasePointer.Accept(this); mps.MemberPointer.Accept(this); EnsureTypeVariable(mps); }
public void VisitMemberPointerSelector(MemberPointerSelector mps) { int prec = SetPrecedence(PrecedenceMemberPointerSelector); Dereference d = mps.BasePointer as Dereference; if (d != null) { d.Expression.Accept(this); writer.Write("->*"); } else { mps.BasePointer.Accept(this); writer.Write(".*"); } var old = forceParensIfSamePrecedence; forceParensIfSamePrecedence = true; mps.MemberPointer.Accept(this); forceParensIfSamePrecedence = old; ResetPresedence(prec); }
public void CfSegmentedAccess() { var es = new Identifier("es", PrimitiveType.SegmentSelector, RegisterStorage.None); var ds = new Identifier("ds", PrimitiveType.SegmentSelector, RegisterStorage.None); var bx = new Identifier("bx", PrimitiveType.SegmentSelector, RegisterStorage.None); var e = new MemberPointerSelector( PrimitiveType.Word16, m.Deref(es), new MemberPointerSelector( PrimitiveType.Word16, m.Deref(ds), bx)); e.Accept(cf); Assert.AreEqual("es->*(ds->*bx)", sw.ToString()); }
public void CfMemberPointerSelector() { Identifier ds = new Identifier("ds", PrimitiveType.SegmentSelector, null); Identifier bx = new Identifier("bx", PrimitiveType.Word16, null); Expression e = new MemberPointerSelector(PrimitiveType.Byte, ds, bx); e.Accept(cf); Assert.AreEqual("ds.*bx", sw.ToString()); }
public SlicerResult VisitMemberPointerSelector(MemberPointerSelector mps, BackwardSlicerContext ctx) { throw new NotImplementedException(); }
public bool VisitMemberPointerSelector(MemberPointerSelector mps, TypeVariable tv) { throw new NotImplementedException(); }
public DataType VisitMemberPointerSelector(MemberPointerSelector mps) { mps.BasePointer.Accept(this); mps.MemberPointer.Accept(this); return(handler.DataTypeTrait(mps, prog.Platform.PointerType)); }
public bool VisitMemberPointerSelector(MemberPointerSelector mps) { throw new NotImplementedException(); }
void IExpressionVisitor.VisitMemberPointerSelector(MemberPointerSelector mps) { throw new NotImplementedException(); }
public ValueSet VisitMemberPointerSelector(MemberPointerSelector mps, BitRange bitRange) { throw new NotImplementedException(); }
public virtual Expression VisitMemberPointerSelector(MemberPointerSelector mps) { mps.BasePointer = mps.BasePointer.Accept(this); mps.MemberPointer = mps.MemberPointer.Accept(this); return(mps); }
public void VisitMemberPointerSelector(MemberPointerSelector mps) { handler.MemAccessTrait(basePointer, mps, mps.DataType.Size, eField, 0); }
public virtual void VisitMemberPointerSelector(MemberPointerSelector mps) { mps.BasePointer.Accept(this); mps.MemberPointer.Accept(this); }
public bool VisitMemberPointerSelector(MemberPointerSelector mps) => mps.BasePointer.Accept(this) || mps.MemberPointer.Accept(this);