.NET ähnlich Maschinencode ?



  • Ein freundliches Hallo zusammen ;),

    habt ihr vielleicht eine Ahnung wie .NET -Code in einer Portable Executable aussieht ? Ich hab ja schon viel darüber gelesen - dass der Code zuerst von der betreffenden Sprache in die Intermediate Language (IL) übersetzt wird und dann erst kompiliert wird. Aber wie sieht er dann in der PE selbst aus ?

    Ich habe unter codeproject.com auch schon einen Artikel gefunden, der die "MetaData" behandelt, also konkret: der Artikel beschreibt wie die MetaData -Tabellen in der .exe vorliegen und wie z.B. ein Index in diese Tabellen aussehen kann. Nur der Code selber...(?)
    Ich nehme mal nicht an, dass der Code in "richtigen" (lesbaren) Zeichenfolgen irgendwo in der EXE Datei steht, also nicht so wie man ihn in der Intermediate Language vorfindet. Wird der Code evtl auch in so etwas wie eine spezifische Maschinensprache übersetzt ? -> also ich stelle mir das so vor, dass ein einzelner Befehl sagen wir mal 32-Bit lang ist und dann je nach Bitfolge -eben wie in der Maschinensprache- ein anderer Befehl übersetzt wird (z.B. '2F 4A 76 10' wird zur Laufzeit in "ldarg.0" übersetzt, was dann anschließend in Maschinencode übersetzt wird).

    Oder liege ich da völlig falsch ? oO ^^
    Vielleicht kennt ja jemand einen Artikel, der Licht ins Dunkel bringt.

    boah cool :xmas2: <- wosn des ? *grins*

    Grüße
    Chris



  • Xzibit schrieb:

    habt ihr vielleicht eine Ahnung wie .NET -Code in einer Portable Executable aussieht ? Ich hab ja schon viel darüber gelesen - dass der Code zuerst von der betreffenden Sprache in die Intermediate Language (IL) übersetzt wird und dann erst kompiliert wird. Aber wie sieht er dann in der PE selbst aus ?

    In der EXE selber sind nur Metadaten und IL-Code (oder bei mixed-mode-assemblies auch noch maschinen-code).

    Schau es Dir doch selber mit "ildasm.exe" an (im SDK von .NET dabei).

    Xzibit schrieb:

    Wird der Code evtl auch in so etwas wie eine spezifische Maschinensprache übersetzt ?

    Der Code ist IL. IL ist sozusagen eine eigene "Maschinensprache" die logischerweise auch aus Bits und Bytes (OpCodes) besteht...

    In der Specification sind die OpCodes definiert:
    http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-335.pdf

    Siehe auch:
    http://msdn2.microsoft.com/en-us/netframework/aa569283.aspx



  • Genau das was ich gesucht hab.

    DAAAANKKKEEEE !!!! 😉

    Schöne Grüße
    Chris


Anmelden zum Antworten