¿Hay alguna documentación o hay una parte del código fuente de cecil que puedo consultar para obtener una vista completa de qué Operand
tipos cecil utilizará para un determinado Code
valor? Por ejemplo: puedo deducir de MethodBodyRocks
que Ldloc
toma un Operand
del tipo VariableDefinition
, pero no he podido rastrear esto hacia abajo para algunos de los otros códigos de instrucción.cecil: Instruction.Operand tipos correspondientes a Instruction.OpCode.Code value
7
A
Respuesta
5
Puede ver la definición de cada OpCode en el archivo OpCodes.cs.
E.g. para Ldloc que se vería OperandType.InlineVar
17
Para añadir a la respuesta de poupou, OpCodes.cs muestra qué OperandType
se asigna para cada código de instrucción. Usando este OperandType
puede consultar CodeReader.ReadOperand para ver cómo se usan estos OperandType
s para determinar qué tipo de objeto concreto se construye. También tenga en cuenta que CodeReader.ReadCode
usa CodeReader.ResolveBranches
para transformar algunos operandos de desviaciones de instrucción en objetos Instruction
antes de devolver.
creé esta mesa, que era mucho más conveniente entonces cavar a través de la fuente cada vez (nada no se tratan en esta tabla debe tener una OperandType InlineNone):
Instruction.OpCode.Code|Instruction.OpCode.OperandType|Instruction.Operand class
Ldarg_S |ShortInlineArg |ParameterDefinition
Ldarga_S |ShortInlineArg |ParameterDefinition
Starg_S |ShortInlineArg |ParameterDefinition
Ldloc_S |ShortInlineVar |VariableDefinition
Ldloca_S |ShortInlineVar |VariableDefinition
Stloc_S |ShortInlineVar |VariableDefinition
Ldc_I4_S |ShortInlineI |sbyte <===== NOTE: special case
Ldc_I4 |InlineI |int32
Ldc_I8 |InlineI8 |int64
Ldc_R4 |ShortInlineR |single
Ldc_R8 |InlineR |float (64 bit)
Jmp |InlineMethod |MethodReference
Call |InlineMethod |MethodReference
Calli |InlineSig |CallSite
Br_S |ShortInlineBrTarget |Instruction
Brfalse_S |ShortInlineBrTarget |Instruction
Brtrue_S |ShortInlineBrTarget |Instruction
Beq_S |ShortInlineBrTarget |Instruction
Bge_S |ShortInlineBrTarget |Instruction
Bgt_S |ShortInlineBrTarget |Instruction
Ble_S |ShortInlineBrTarget |Instruction
Blt_S |ShortInlineBrTarget |Instruction
Bne_Un_S |ShortInlineBrTarget |Instruction
Bge_Un_S |ShortInlineBrTarget |Instruction
Bgt_Un_S |ShortInlineBrTarget |Instruction
Ble_Un_S |ShortInlineBrTarget |Instruction
Blt_Un_S |ShortInlineBrTarget |Instruction
Br |InlineBrTarget |Instruction
Brfalse |InlineBrTarget |Instruction
Brtrue |InlineBrTarget |Instruction
Beq |InlineBrTarget |Instruction
Bge |InlineBrTarget |Instruction
Bgt |InlineBrTarget |Instruction
Ble |InlineBrTarget |Instruction
Blt |InlineBrTarget |Instruction
Bne_Un |InlineBrTarget |Instruction
Bge_Un |InlineBrTarget |Instruction
Bgt_Un |InlineBrTarget |Instruction
Ble_Un |InlineBrTarget |Instruction
Blt_Un |InlineBrTarget |Instruction
Switch |InlineSwitch |Instruction array
Callvirt |InlineMethod |MethodReference
Cpobj |InlineType |TypeReference
Ldobj |InlineType |TypeReference
Ldstr |InlineString |string
Newobj |InlineMethod |MethodReference
Castclass |InlineType |TypeReference
Isinst |InlineType |TypeReference
Unbox |InlineType |TypeReference
Ldfld |InlineField |FieldReference
Ldflda |InlineField |FieldReference
Stfld |InlineField |FieldReference
Ldsfld |InlineField |FieldReference
Ldsflda |InlineField |FieldReference
Stsfld |InlineField |FieldReference
Stobj |InlineType |TypeReference
Box |InlineType |TypeReference
Newarr |InlineType |TypeReference
Ldelema |InlineType |TypeReference
Ldelem_Any |InlineType |TypeReference
Stelem_Any |InlineType |TypeReference
Unbox_Any |InlineType |TypeReference
Refanyval |InlineType |TypeReference
Mkrefany |InlineType |TypeReference
Ldtoken |InlineTok |IMetadataTokenProvider
Leave |InlineBrTarget |Instruction
Leave_S |ShortInlineBrTarget |Instruction
Ldftn |InlineMethod |MethodReference
Ldvirtftn |InlineMethod |MethodReference
Ldarg |InlineArg |ParameterDefinition
Ldarga |InlineArg |ParameterDefinition
Starg |InlineArg |ParameterDefinition
Ldloc |InlineVar |VariableDefinition
Ldloca |InlineVar |VariableDefinition
Stloc |InlineVar |VariableDefinition
Unaligned |ShortInlineI |byte
Initobj |InlineType |TypeReference
Constrained |InlineType |TypeReference
No |ShortInlineI |byte
Sizeof |InlineType |TypeReference
Cuestiones relacionadas
- 1. Tipos de variables anulables - miembro .value
- 2. Asignación de operador condicional con tipos Nullable <value>?
- 3. Agregue un try-catch con Mono Cecil
- 4. Ordenando dos matrices correspondientes
- 5. Problema con Scala correspondientes + alcance
- 6. roxygen2 "Error: titlerequires a value"
- 7. AvalonEdit resaltar los caracteres correspondientes
- 8. Doctrine 2 Value Objects
- 9. Convertir System.Drawing.Color a RGB y Hex Value
- 10. UIGraphicsGetCurrentContext value pass a CGContextRef no funciona?
- 11. Alternativas a Entity-Attribute-Value (EAV)?
- 12. Mono-Cecil: ¿Cómo puedo obtener un ModuleDefinition para mscorlib?
- 13. bulldozer Mapeo HashMap <Key,Value> a la lista <Value>
- 14. C# JSON Serialización del diccionario en {key: value, ...} en lugar de {key: key, value: value, ...}
- 15. ¿Qué es más rápido: Math.abs (value) o value * -1?
- 16. reemplazar claves de matriz con las claves correspondientes dadas
- 17. Cuándo utilizar Value Formatter y cuándo usar Value Resolver
- 18. Entity-Attribute-Value Table Design
- 19. Moq caches return value
- 20. Propiedad Value Herencia
- 21. Firefox cache textarea value?
- 22. Hibernate Generated Value strategy
- 23. XmlNode Value vs InnerText
- 24. Key/Value pyqt QComboBox
- 25. user.agent value for crome
- 26. UISegmentedControl value changed programmatically
- 27. codeigniter form set value?
- 28. Split String Value C#
- 29. change NSSlider Value programmatically
- 30. jQuery update cookie value
gran mesa, gracias! – Alexus