Jule konkurrence – Låge nr. 3


Idag skal vi lidt over i en anden boldgade, og det kræver du kender til din IL kode.

Du skal oversætte følgende IL kode til et vilkårligt .NET sprog. Den der kommer tættest på vinder en optisk mus samt tastatur.

IMG_2371

Good luck boys and girls!

   1:  .class private auto ansi beforefieldinit Program
   2:      extends [mscorlib]System.Object
   3:  {
   4:      .method public hidebysig specialname rtspecialname instance void .ctor() cil managed
   5:      {
   6:          .maxstack 8
   7:          L_0000: ldarg.0 
   8:          L_0001: call instance void [mscorlib]System.Object::.ctor()
   9:          L_0006: ret 
  10:      }
  11:   
  12:      .method private hidebysig static void Main(string[] args) cil managed
  13:      {
  14:          .entrypoint
  15:          .maxstack 1
  16:          .locals init (
  17:              [0] string text)
  18:          L_0000: nop 
  19:          L_0001: ldstr "Nu er det snart Jul!"
  20:          L_0006: stloc.0 
  21:          L_0007: ldloc.0 
  22:          L_0008: call void [mscorlib]System.Console::WriteLine(string)
  23:          L_000d: nop 
  24:          L_000e: call string [mscorlib]System.Console::ReadLine()
  25:          L_0013: pop 
  26:          L_0014: ret 
  27:      }
  28:   
  29:  }
  30:   


Comments (7)
  1. Brian says:

    Det er debug build af følgende:

    using System;

    namespace ConsoleApplication1 {

       class Program {

           static void Main(string[] args) {

               var text = "Nu er det snart jul";

               Console.WriteLine(text);

               Console.ReadLine();

           }

       }

    }

    Du kan selvfølgelig have brugt "string" i stedet for "var", men da det oversætter til samme IL kan jeg kun gætte.

  2. using System;

    namespace JuleKonkurrenceConsoleProgram

    {

       class Program

       {

           static void Main(string[] args)

           {

               string text = "Nu er det snart jul!";

               Console.WriteLine(text);

               Console.ReadLine();            

           }

       }    

    }

    har dog et spørgsmål til Linie 1

    .class private auto ansi beforefieldinit Program

    Mangler den ikke et namespace?

    .class private auto ansi beforefieldinit Namspace.Program

  3. Henrik Drachmann says:

    Er godt nok c# udvikler – men jeg prøver med "det glemte sprog"

    Jeg vil gerne være en dårlig sport og påpege at Ronniedrengen og Brian mangler et stort J i Jul (tsk tsk)

    Module Program

       Sub Main()

           Dim text As String

           text = "Nu er det snart Jul!"

           Console.WriteLine(text)

           Console.ReadLine()

       End Sub

    End Module

  4. OK, jeg var ikke hurtig nok ude idag.

    Hvad laver de to nop’s i linje 18 og 23?

    Jeg er klar over at compileren i debug mode smider nop’s for at breakpoints og steps bliver muligt forskellige steder.

    Men jeg forstår ikke de to …

  5. Brian Rasmussen kom tættest på i konkurrencen igår . Jeg havde nemlig brugt "keywordet"

  6. Brian says:

    Det er debug mode NOPs. Jeg må indrømme, at jeg ikke ved præcis hvor de indsættes – det ser ud som om det følger nogenlunde samme princip, som jeg bruger til at fordele ost på en pizza, men det korte af det lange er, at de forsvinder i et release build.

  7. Jeg havde forstået det sådan at compileren smed nop’s ind  hvor der er brackets, for at man kan breake på dem.

    Men sådan er det ikke i dette eksempel, hmm  …

Comments are closed.

Skip to main content