cecil: Instruction.Operand-Typen, die dem Instruction.OpCode.Code-Wert entsprechen

7

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.

    
Keith 27.08.2011, 02:52
quelle

2 Antworten

5

Sie können sich die Definition jedes OpCodes in der OpCodes.cs Datei.

z. Für Ldloc würden Sie OperandType.InlineVar

sehen     
poupou 27.08.2011, 15:56
quelle
17

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%     
Keith 27.08.2011 16:12
quelle

Tags und Links