CIL OpCode (Ldarg_0) wird verwendet, obwohl keine Argumente vorhanden sind

7

Ich habe den folgenden C # -Code.

%Vor%

Erzeugt die folgende CIL

%Vor%

Nun, was ich nicht verstehe, ist die Linie bei Offset 0001:

  

ldarg.0

Ich weiß, wofür dieser Opcode ist, aber ich verstehe nicht wirklich, warum er in dieser Methode verwendet wird, da es keine Argumente gibt, richtig?

Weiß jemand warum? :)

    
animaonline 02.05.2013, 19:26
quelle

3 Antworten

19

In Instanzmethoden gibt es ein implizites Argument mit dem Index 0, das die Instanz darstellt, auf die die Methode aufgerufen wird. Er kann mit ldarg.0 opcode auf den IL-Auswertungsstapel geladen werden.

    
Zakharia Stanley 02.05.2013, 19:53
quelle
10

Ich denke, dass ldarg.0 this auf den Stack lädt. Siehe diese Antwort MSIL-Frage (Basis)

    
Twiltie 02.05.2013 19:31
quelle
1

Die Zeile bei Offset 0001: Lädt das Argument bei Index 0 auf den Auswertungsstapel.

Weitere Informationen finden Sie in Ссылка

  

Das Argument am Index 0 ist die instance der class , die enthält   die Methoden HelloWorld und Add , wie dies (oder Selbst in anderen   languajes)

%Vor%

... diese letzte Zeile ist als Aufruf: this.Add(2,2); in C #.

    
JuanRO 22.05.2013 15:56
quelle

Tags und Links