Пример #1
0
 public void Write(Block block)
 {
     address.Value = block.Current;
     block.Add(Block);
     uint padlen = Module.Align((uint)Block.Length, 4) - (uint)Block.Length;
     if (padlen > 0) block.Add(new byte[padlen]);
 }
Пример #2
0
 public override void Write(Block block)
 {
     foreach (FieldInfo fi in GetFields())
     {
         Object obj = fi.GetValue(this);
         if (obj is Table)
         {
             block.Add(((Table)obj).Address);
             block.Add(((Table)obj).Size);
         }
         else if (obj is byte) block.Add((byte)obj);
         else if (obj is ushort) block.Add((ushort)obj);
         else if (obj is uint) block.Add((uint)obj);
         else if (obj is long) block.Add((long)obj);
         else if (obj is char[]) block.Add((char[])obj);
         else if (obj is string) block.Add((string)obj);
         else if (obj is Val32) block.Add((Val32)obj);
         else throw new Exception("The method or operation is not implemented.");
     }
 }
Пример #3
0
 public override void Write(Block block)
 {
     block.Add(data);
 }
Пример #4
0
 public void Write(Block block)
 {
     if (op1 is Val32 && relative)
     {
         block.Add(GetCodes());
     }
     else if (data != null)
     {
         block.Add(data);
         if (op2 is Addr32) (op2 as Addr32).Write(block);
         if (op1 != null)
         {
             if (op1 is byte) block.Add((byte)op1);
             else if (op1 is ushort) block.Add((ushort)op1);
             else if (op1 is Val32) block.Add((Val32)op1);
             else if (op1 is Val32) block.Add((Val32)op1);
             else throw new Exception("The method or operation is not implemented.");
         }
         if (op2 is byte) block.Add((byte)op2);
     }
 }
Пример #5
0
 public override void Write(Block block)
 {
     foreach (var ctg in data.Values)
         foreach (var db in ctg.Values)
             db.Write(block);
     if (IsEmtpy) block.Add(new byte[16]);
 }
Пример #6
0
 public void Write(Block block)
 {
     if (address != null)
     {
         block.Add((byte)(0x05 + (middleBits << 3)));
         block.Add(address);
     }
     else
     {
         block.Add(GetCodes());
     }
 }
Пример #7
0
 public void Write(Block block)
 {
     hintAddress.Value = block.Current;
     block.Add(Hint);
     block.Add(HeaderBase.Pad(NameSize, Name));
 }
Пример #8
0
 public void Write(Block block, bool lookup)
 {
     if (!lookup) importRef.Value = block.Current;
     block.Add(hintAddress);
 }
Пример #9
0
 public void WriteName(Block block)
 {
     table.Name = block.Current;
     block.Add(HeaderBase.Pad(NameSize, name));
 }
Пример #10
0
 public void WriteImportLookupTable(Block block)
 {
     table.ImportLookupTable = block.Current;
     foreach (Symbol sym in symbols.Values) sym.Write(block, true);
     block.Add(0);
 }
Пример #11
0
 public void WriteImportAddressTable(Block block)
 {
     table.ImportAddressTable = block.Current;
     foreach (Symbol sym in symbols.Values) sym.Write(block, false);
     block.Add(0);
 }