* opcodes.c, opcodes.h: export interesting info about opcodes.
svn path=/trunk/mono/; revision=2263
+
+Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
+
+ * opcodes.c, opcodes.h: export interesting info about opcodes.
+
2002-02-05 Dietmar Maurer <dietmar@ximian.com>
* object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
libmetadata_a_SOURCES = \
assembly.c \
+ opcodes.c \
image.c \
metadata.c \
verify.c \
libmetadatainclude_HEADERS = \
assembly.h \
+ opcodes.h \
blob.h \
cil-coff.h \
mono-endian.h \
--- /dev/null
+/*
+ * opcodes.c: CIL instruction information
+ *
+ * Author:
+ * Paolo Molaro (lupus@ximian.com)
+ *
+ * (C) 2002 Ximian, Inc.
+ */
+#include <mono/metadata/opcodes.h>
+
+#define OPDEF(a,b,c,d,e,f,g,h,i,j) \
+ { Mono ## e, MONO_FLOW_ ## j, h, i },
+
+const MonoOpcode
+mono_opcodes [MONO_N_OPCODES] = {
+#include "mono/cil/opcode.def"
+};
+
+#undef OPDEF
+
+#define OPDEF(a,b,c,d,e,f,g,h,i,j) b,
+
+const char* const
+mono_opcode_names [MONO_N_OPCODES] = {
+#include "mono/cil/opcode.def"
+};
+
--- /dev/null
+#ifndef __MONO_METADATA_OPCODES_H__
+#define __MONO_METADATA_OPCODES_H__
+
+/*
+ * opcodes.h: CIL instruction information
+ *
+ * Author:
+ * Paolo Molaro (lupus@ximian.com)
+ *
+ * (C) 2002 Ximian, Inc.
+ */
+
+enum {
+ MONO_FLOW_NEXT,
+ MONO_FLOW_BRANCH,
+ MONO_FLOW_COND_BRANCH,
+ MONO_FLOW_ERROR,
+ MONO_FLOW_CALL,
+ MONO_FLOW_RETURN,
+ MONO_FLOW_META
+};
+
+enum {
+ MonoInlineNone,
+ MonoInlineType,
+ MonoInlineField,
+ MonoInlineMethod,
+ MonoInlineTok,
+ MonoInlineString,
+ MonoInlineSig,
+ MonoInlineVar,
+ MonoShortInlineVar,
+ MonoInlineBrTarget,
+ MonoShortInlineBrTarget,
+ MonoInlineSwitch,
+ MonoInlineR,
+ MonoShortInlineR,
+ MonoInlineI,
+ MonoShortInlineI,
+ MonoInlineI8
+};
+
+typedef struct {
+ unsigned char argument;
+ unsigned char flow_type;
+ unsigned char byte0, byte1;
+} MonoOpcode;
+
+#define MONO_N_OPCODES 300
+
+extern const MonoOpcode mono_opcodes [MONO_N_OPCODES];
+extern const char* const mono_opcode_names [MONO_N_OPCODES];
+
+#endif /* __MONO_METADATA_OPCODES_H__ */
#include <mono/metadata/object.h>
#include <mono/metadata/verify.h>
+#include <mono/metadata/opcodes.h>
#include <mono/metadata/tabledefs.h>
#include <mono/metadata/mono-endian.h>
#include <string.h>
(list) = g_slist_prepend ((list), vinfo); \
} while (0)
-static const char*
+static const char* const
valid_cultures[] = {
"ar-SA", "ar-IQ", "ar-EG", "ar-LY",
"ar-DZ", "ar-MA", "ar-TN", "ar-OM",
while (ip < end) {
ip_offset = ip - header->code;
- g_print ("IL_%04x: %02x\n", ip_offset, *ip);
+ g_print ("IL_%04x: %02x %s\n", ip_offset, *ip, mono_opcode_names [*ip]);
if (start || !(code [ip_offset].flags & CODE_SEEN)) {
if (start) {
code [ip_offset].stack_count = 0;