Gibt es eine Dokumentation oder gibt es einen Teil des cecil-Quellcodes, den ich konsultieren kann, um einen umfassenden Überblick darüber zu bekommen, welche Operand
-Typen cecil für einen gegebenen Code
-Wert verwenden wird? ZB: Ich kann aus MethodBodyRocks
ermitteln, dass Ldloc
ein Operand
vom Typ VariableDefinition
benötigt, aber ich konnte das nicht für einige der anderen Befehlscodes aufspüren.
Sie können sich die Definition jedes OpCodes in der OpCodes.cs
z. Für Ldloc würden Sie OperandType.InlineVar
sehen Um zu poupou's Antwort hinzuzufügen, OpCodes.cs zeigt welche OperandType
wird für jeden Befehlscode zugewiesen. Mit diesem OperandType
können Sie CodeReader.ReadOperand konsultieren, um zu erfahren, wie Diese OperandType
s werden verwendet, um zu bestimmen, welcher konkrete Objekttyp konstruiert wird. Beachten Sie auch, dass CodeReader.ReadCode
CodeReader.ResolveBranches
verwendet, um einige Operanden von Anweisungsoffsets in Instruction
-Objekte umzuwandeln, bevor sie zurückgegeben werden.
Ich habe diese Tabelle erstellt, die viel bequemer war, als jedes Mal durch die Quelle zu graben (alles, was in dieser Tabelle nicht behandelt wird, sollte einen InlineNone OperandType haben):
%Vor%Tags und Links c# mono cil il mono.cecil