2011-08-27 4 views
7

세실이 주어진 유형에 대해 Operand 유형을 사용할 수있는 포괄적 인 정보를 얻으려면 상담원이 사용할 수있는 세실 소스 코드가 있습니까? Code 값이 있습니까? 예 : MethodBodyRocks에서 이 VariableDefinitionOperand을 가져 왔지만 일부 다른 명령어 코드를 추적 할 수 없었습니다.cecil : Instruction.OpCode.Code 값에 해당하는 유형입니다.

답변

5

OpCodes.cs 파일에서 모든 OpCode의 정의를 볼 수 있습니다.

예. Ldloc 당신은 OperandType.InlineVar

17

이 poupou의 대답에 각 명령어 코드에 할당됩니다 OperandTypeOpCodes.cs 쇼를 추가하려면 볼 것입니다. 이 OperandType을 사용하면 OperandType을 사용하여 생성 된 구체적인 객체 유형을 결정하는 방법을 확인하려면 CodeReader.ReadOperand을 참조하십시오. 또한 CodeReader.ReadCodeCodeReader.ResolveBranches을 사용하여 일부 피연산자를 명령 오프셋에서 Instruction 개체로 변환하여 반환하기 전에 참조하십시오.

내가 많은 (아무것도가 InlineNone OperandType가 있어야이 표에 포함되지 않음) 소스를 통해 모든 시간을 파고 더 편리 다음이었다이 테이블 생성 :

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 
+1

큰 테이블을, 감사합니다! – Alexus

관련 문제