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? :)
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.
Ich denke, dass ldarg.0
this
auf den Stack lädt. Siehe diese Antwort
MSIL-Frage (Basis)
Die Zeile bei Offset 0001: Lädt das Argument bei Index 0 auf den Auswertungsstapel.
Weitere Informationen finden Sie in Ссылка
%Vor%Das Argument am Index 0 ist die
instance
derclass
, die enthält die MethodenHelloWorld
undAdd
, wie dies (oder Selbst in anderen languajes)
... diese letzte Zeile ist als Aufruf: this.Add(2,2);
in C #.