Exemplo n.º 1
0
 public MSILAssembler(MethodBody methodBody)
 {
     this.MethodBody = methodBody;
     _disassembler = new MSILDisassembler(methodBody);
     _image = methodBody.Method._netheader._assembly.Image;
     _offsetConverter = new OffsetConverter(Section.GetSectionByRva(methodBody.Method._netheader._assembly, methodBody.Method.RVA));
     _bodyOffset = _offsetConverter.RvaToFileOffset(methodBody.Method.RVA) + methodBody.HeaderSize;
     _tokenResolver = methodBody.Method._netheader.TokenResolver;
 }
Exemplo n.º 2
0
 internal NETMethodReader(PeImage peImage, MethodBody methodbody)
 {
     tokenResolver = new MetaDataTokenResolver(peImage.ParentAssembly._netHeader);
     this.peImage = peImage;
     this.rva = methodbody.Method.RVA;
     this.methodbody = methodbody;
     peImage.SetOffset(Offset.FromRva(rva, peImage.ParentAssembly).FileOffset);
     rawoffset = (uint)peImage.Stream.Position;
     signature = peImage.Reader.ReadByte();
 }
Exemplo n.º 3
0
 public static MethodBody FromMethod(MethodDefinition methodDef)
 {
     MethodBody body = new MethodBody();
     body.Method = methodDef;
     body._reader = new NETMethodReader(methodDef._netheader._assembly._peImage, body);
     if (body.IsFat)
         body._reader.ReadFatMethod();
     return body;
 }
Exemplo n.º 4
0
 public override void LoadCache()
 {
     base.LoadCache();
     _paramRange = MemberRange.CreateRange<ParameterDefinition>(this, 5, NETHeader.TablesHeap.GetTable(MetaDataTableType.Param, false));
     _semantics = Semantics;
     _body = Body;
     _genericParameters = GenericParameters;
 }
Exemplo n.º 5
0
 public override void ClearCache()
 {
     base.ClearCache();
     _paramRange = null;
     _semantics = null;
     _body = null;
     _genericParameters = new GenericParameter[0];
     _hasLoadedGenericParameters = false;
 }