/// <summary> /// /// </summary> public void Save() { // // Note :- Call this (Save ) method only after // Compilation of All statements.... _type_builder.CreateType(); // // Retrieve the Entry Point from TModule.... // MethodBuilder mb = _p._get_entry_point("MAIN"); if (mb != null) { // // Here we will set the Assembly as a Console Application... // We will also set the Entry Point.... // _asm_builder.SetEntryPoint(mb, PEFileKinds.ConsoleApplication); } // // Write the Resulting Executable... // _asm_builder.Save(_name); }
/// <summary> /// /// </summary> /// <param name="cont"></param> /// <returns></returns> public override bool Compile(DNET_EXECUTABLE_GENERATION_CONTEXT cont) { if (m_proc == null) { // if it is a recursive call.. // resolve the address... m_proc = cont.GetProgram().Find(_procname); } string name = m_proc.Name; TModule str = cont.GetProgram(); MethodBuilder bld = str._get_entry_point(name); foreach (Exp ex in m_actuals) { ex.Compile(cont); } cont.CodeOutput.Emit(OpCodes.Call, bld); return(true); }