diff --git a/source/Indy.IL2CPU.Assembler/Assembler.cs b/source/Indy.IL2CPU.Assembler/Assembler.cs index 3e9db1351..8dcc30f15 100644 --- a/source/Indy.IL2CPU.Assembler/Assembler.cs +++ b/source/Indy.IL2CPU.Assembler/Assembler.cs @@ -88,28 +88,34 @@ namespace Indy.IL2CPU.Assembler { mOutputWriter.WriteLine("include '{0}'", xInclude); } mOutputWriter.WriteLine(); - mOutputWriter.WriteLine("section '.data' data readable writeable"); - mOutputWriter.WriteLine(); - foreach (DataMember xMember in mDataMembers) { - mOutputWriter.WriteLine("\t" + xMember); - } - mOutputWriter.WriteLine(); - mOutputWriter.WriteLine("section '.code' code readable executable"); - mOutputWriter.WriteLine(); - mOutputWriter.WriteLine(" " + EntryPointLabelName + ":"); - foreach (Instruction x in mInstructions) { - string prefix = "\t"; - if (x is Label) { - mOutputWriter.WriteLine(); - prefix = " "; + if (mDataMembers.Count > 0) { + mOutputWriter.WriteLine("section '.data' data readable writeable"); + mOutputWriter.WriteLine(); + foreach (DataMember xMember in mDataMembers) { + mOutputWriter.WriteLine("\t" + xMember); } - mOutputWriter.WriteLine(prefix + x); + mOutputWriter.WriteLine(); } - mOutputWriter.WriteLine(); - mOutputWriter.WriteLine("section '.idata' import data readable writeable"); - mOutputWriter.WriteLine(); - foreach (ImportMember xImportMember in mImportMembers) { - mOutputWriter.WriteLine("\t" + xImportMember); + if (mInstructions.Count > 0) { + mOutputWriter.WriteLine("section '.code' code readable executable"); + mOutputWriter.WriteLine(); + mOutputWriter.WriteLine("\t" + EntryPointLabelName + ":"); + foreach (Instruction x in mInstructions) { + string prefix = "\t\t"; + if (x is Label) { + mOutputWriter.WriteLine(); + prefix = " "; + } + mOutputWriter.WriteLine(prefix + x); + } + mOutputWriter.WriteLine(); + } + if (mImportMembers.Count > 0) { + mOutputWriter.WriteLine("section '.idata' import data readable writeable"); + mOutputWriter.WriteLine(); + foreach (ImportMember xImportMember in mImportMembers) { + mOutputWriter.WriteLine("\t" + xImportMember); + } } } diff --git a/source/Indy.IL2CPU.IL.X86/Indy.IL2CPU.IL.X86.csproj.user b/source/Indy.IL2CPU.IL.X86/Indy.IL2CPU.IL.X86.csproj.user deleted file mode 100644 index b875c0c26..000000000 --- a/source/Indy.IL2CPU.IL.X86/Indy.IL2CPU.IL.X86.csproj.user +++ /dev/null @@ -1,5 +0,0 @@ - - - ProjectFiles - - \ No newline at end of file diff --git a/source/Indy.IL2CPU.IL/Indy.IL2CPU.IL.csproj.user b/source/Indy.IL2CPU.IL/Indy.IL2CPU.IL.csproj.user deleted file mode 100644 index 5c2d6e6a7..000000000 --- a/source/Indy.IL2CPU.IL/Indy.IL2CPU.IL.csproj.user +++ /dev/null @@ -1,5 +0,0 @@ - - - ShowAllFiles - - \ No newline at end of file diff --git a/source/Indy.IL2CPU/Engine.cs b/source/Indy.IL2CPU/Engine.cs index e3e12ad2a..611905a8a 100644 --- a/source/Indy.IL2CPU/Engine.cs +++ b/source/Indy.IL2CPU/Engine.cs @@ -80,6 +80,8 @@ namespace Indy.IL2CPU { IL.Op.QueueMethod += QueueMethod; try { mMethods.Add(mCrawledAssembly.EntryPoint, false); + // first instructions are for calling the entrypoint + mAssembler.Add(new JumpAlways(new Label(mCrawledAssembly.EntryPoint).Name)); ProcessAllMethods(); } finally { mAssembler.Flush();