Jule konkurrence - Låge nr. 3

Published 03 December 08 09:13 AM

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:   

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

# Brian said on December 3, 2008 4:42 AM:

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.

# Ronniedrengen said on December 3, 2008 5:44 AM:

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

# Henrik Drachmann said on December 3, 2008 6:13 AM:

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

# Klaus Hebsgaard said on December 3, 2008 10:20 AM:

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 ...

# Developer Evangelist said on December 4, 2008 3:23 AM:

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

# Brian said on December 4, 2008 7:37 AM:

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.

# Klaus Hebsgaard said on December 5, 2008 6:01 AM:

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  ...

Leave a Comment

(required) 
(optional)
(required) 

This Blog

Syndication

Page view tracker