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