1 /** 2 * \file 3 */ 4 5 #ifndef __MONO_METADATA_OPCODES_H__ 6 #define __MONO_METADATA_OPCODES_H__ 7 8 /* 9 * opcodes.h: CIL instruction information 10 * 11 * Author: 12 * Paolo Molaro (lupus@ximian.com) 13 * 14 * (C) 2002 Ximian, Inc. 15 */ 16 17 #include <mono/utils/mono-publib.h> 18 19 MONO_BEGIN_DECLS 20 21 #define MONO_CUSTOM_PREFIX 0xf0 22 23 #define OPDEF(a,b,c,d,e,f,g,h,i,j) \ 24 MONO_ ## a, 25 26 typedef enum { 27 #include "mono/cil/opcode.def" 28 MONO_CEE_LAST 29 } MonoOpcodeEnum; 30 31 #undef OPDEF 32 33 enum { 34 MONO_FLOW_NEXT, 35 MONO_FLOW_BRANCH, 36 MONO_FLOW_COND_BRANCH, 37 MONO_FLOW_ERROR, 38 MONO_FLOW_CALL, 39 MONO_FLOW_RETURN, 40 MONO_FLOW_META 41 }; 42 43 enum { 44 MonoInlineNone, 45 MonoInlineType, 46 MonoInlineField, 47 MonoInlineMethod, 48 MonoInlineTok, 49 MonoInlineString, 50 MonoInlineSig, 51 MonoInlineVar, 52 MonoShortInlineVar, 53 MonoInlineBrTarget, 54 MonoShortInlineBrTarget, 55 MonoInlineSwitch, 56 MonoInlineR, 57 MonoShortInlineR, 58 MonoInlineI, 59 MonoShortInlineI, 60 MonoInlineI8 61 }; 62 63 typedef struct { 64 unsigned char argument; 65 unsigned char flow_type; 66 unsigned short opval; 67 } MonoOpcode; 68 69 MONO_API extern const MonoOpcode mono_opcodes []; 70 71 MONO_API const char* 72 mono_opcode_name (int opcode); 73 74 MONO_API MonoOpcodeEnum 75 mono_opcode_value (const mono_byte **ip, const mono_byte *end); 76 77 MONO_END_DECLS 78 79 #endif /* __MONO_METADATA_OPCODES_H__ */ 80 81