MSIL Fragen
-
Ich verstehe folgenden Code-Ausschnitt nicht so richtig:
int Add(int index, System.Windows.Forms.MenuItem item)
IL_0000: ldarg.2 IL_0001: ldfld class System.Windows.Forms.Menu System.Windows.Forms.MenuItem::menu IL_0006: brfalse.s IL_007f ... IL_006f: ldfld class System.Windows.Forms.Menu System.Windows.Forms.MenuItem::menu IL_0074: callvirt instance class System.Windows.Forms.Menu/MenuItemCollection
Die Adresse von item wird auf den Stack gelegt.
Die Adresse von item.menu wird auf den Stack gelegt.
Wenn item.menu gleich false (sprich: Null) ist, wird zu IL_007f gesprungen.Ich nehme an IL_007f ist das Gleiche wie IL_0070f. Allerdings befindet sich auf IL_0070f kein Opcode, bzw. ein Anfang eines Opcodes. Wie kann ich das verstehen? Wird mitten in ldfld hingesprungen? Wenn ja, woher weiß ich, wie ldfld aufgebaut ist?
-
Sorry, hatte irgendwie ne Hirnblockade und das 7f als 7 interpretiert.
-
ldtoken MyNamespace.MyClass
MSDN Library schrieb:
ldtoken
Konvertiert ein Metadatentoken in seine Laufzeitdarstellung.Kann mir das mal jemand bitte genauer erlären (vielleicht mit einem Beispiel)? Wie kann ich mir ldtoken denn in C# vorstellen?