コード例 #1
0
ファイル: DataSection.cs プロジェクト: 7shi/LLPML
 public void Write(Block32 block)
 {
     address.Value = block.Current;
     block.AddBlock(Block);
     uint padlen = Module.Align((uint)Block.Length, 4) - (uint)Block.Length;
     if (padlen > 0) block.AddBytes(new byte[padlen]);
 }
コード例 #2
0
ファイル: OpModule.cs プロジェクト: 7shi/LLPML
        public Val32 GetString(string s)
        {
            if (strings.ContainsKey(s))
                return strings.Get(s) as Val32;

            var block = new Block32();
            block.AddBytes(Module.EncodeString(s));
            var type = Val32.NewB(0, true);
            var ret = AddData("string_constant", s, type, 2, s.Length, block);
            strings.Add(s, ret);
            type.Reference = GetTypeObjectD(Root.GetStruct("string"));
            return ret;
        }
コード例 #3
0
ファイル: AnySection.cs プロジェクト: 7shi/LLPML
 public override void Write(Block32 block)
 {
     block.AddBytes(data);
 }
コード例 #4
0
ファイル: DataSection.cs プロジェクト: 7shi/LLPML
 public override void Write(Block32 block)
 {
     foreach (ListDictionary ctg in data.Values)
         foreach (var db in ctg.Values)
             (db as DataBlock).Write(block);
     if (IsEmtpy) block.AddBytes(new byte[16]);
 }
コード例 #5
0
ファイル: Addr32.cs プロジェクト: 7shi/LLPML
 public void Write(Block32 block)
 {
     if (address != null)
     {
         block.AddByte((byte)(0x05 + (middleBits << 3)));
         block.AddVal32(address);
     }
     else
     {
         block.AddBytes(GetCodes());
     }
 }