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