public override bool Process(ProcessArgs args) { if(args.FinalPass) args.Writer.Write(m_val); else args.Intermediate.Add(this); return true; }
public override bool Process(ProcessArgs args) { if (!args.Symbols.ContainsKey(m_val)) { args.Intermediate.Add(this); return false; } long targetAddress = args.Symbols[m_val]; long localAddress = args.GetOffset() + args.Base; dynamic resolved = 0; if (Is64Bit) { localAddress += sizeof(long); resolved = targetAddress - (Absolute ? 0L : localAddress); } else { localAddress += sizeof(int); resolved = (int)(targetAddress - (Absolute ? 0L : localAddress)); } if (args.FinalPass) args.Writer.Write(resolved); else { byte[] val = BitConverter.GetBytes(resolved); foreach (var b in val) args.Intermediate.Add(new AddressIndependentByte(b)); } return true; }
public override bool Process(ProcessArgs args) { args.Symbols.Add(m_val, args.GetOffset() + args.Base); return true; }
public abstract bool Process(ProcessArgs args);
public override bool Process(ProcessArgs args) { throw new Exception("This shouldn't exist at the point where process is called"); }