예제 #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());
     }
 }