aboutsummaryrefslogtreecommitdiff
path: root/pkg/cl/opcodes.h
diff options
context:
space:
mode:
authorJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
committerJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
commit40e5a5811c6ffce9b0974e93cdd927cbcf60c157 (patch)
tree4464880c571602d54f6ae114729bf62a89518057 /pkg/cl/opcodes.h
downloadiraf-osx-40e5a5811c6ffce9b0974e93cdd927cbcf60c157.tar.gz
Repatch (from linux) of OSX IRAF
Diffstat (limited to 'pkg/cl/opcodes.h')
-rw-r--r--pkg/cl/opcodes.h95
1 files changed, 95 insertions, 0 deletions
diff --git a/pkg/cl/opcodes.h b/pkg/cl/opcodes.h
new file mode 100644
index 00000000..bcce4b7f
--- /dev/null
+++ b/pkg/cl/opcodes.h
@@ -0,0 +1,95 @@
+/*
+ * OPCODES.H -- This structure is a template for each instruction in the
+ * dictionary. C_opcode is a constant, from below, and is an index into
+ * opcodetbl[]; c_length is the total length, including the opcode, in # of
+ * integers; the address of c_args will be the address of the first argument
+ * (or if there is just one, it IS the first argument).
+ *
+ * The intent is to allow invoking the opcode with
+ * (*opcodetbl[cp->c_opcode]) (&cp->c_args)
+ * where cp is a ptr to struct codeentry.
+ */
+
+struct codeentry {
+ memel c_opcode; /* opcodetbl index; see below */
+ memel c_length; /* total length in memory elements */
+ memel c_args; /* addr of this is addr of first arg */
+};
+
+extern void (*opcodetbl[])();
+
+/* manifest constant opcodes used in c_opcode.
+ * value is index into opcodetbl[].
+ */
+
+#define ABSARGSET 1
+#define ADD 2
+#define ADDASSIGN 3
+#define ADDPIPE 4
+#define ALLAPPEND 5
+
+#define ALLREDIR 6
+#define AND 7
+#define APPENDOUT 8
+#define ASSIGN 9
+#define BIFF 10
+
+#define CALL 11
+#define CASE 12
+#define CHSIGN 13
+#define CONCAT 14
+#define DEFAULT 15
+
+#define DIV 16
+#define DIVASSIGN 17
+#define END 18
+#define EQ 19
+#define EXEC 20
+
+#define FSCAN 21
+#define FSCANF 22
+#define GE 23
+#define GOTO 24
+#define GETPIPE 25
+
+#define GT 26
+#define IMMED 27
+#define INDIRABSSET 28
+#define INDIRPOSSET 29
+#define INDXINCR 30
+
+#define INSPECT 31
+#define INTRINSIC 32
+#define LE 33
+#define LT 34
+#define MUL 35
+
+#define MULASSIGN 36
+#define NE 37
+#define NOT 38
+#define OR 39
+#define OSESC 40
+
+#define POSARGSET 41
+#define POW 42
+#define PRINT 43
+#define PUSHCONST 44
+#define PUSHINDEX 45
+
+#define PUSHPARAM 46
+#define REDIR 47
+#define REDIRIN 48
+#define RMPIPES 49
+#define RETURN 50
+
+#define SCAN 51
+#define SCANF 52
+#define SUB 53
+#define SUBASSIGN 54
+#define SWITCH 55
+
+#define SWOFF 56
+#define SWON 57
+#define FIXLANGUAGE 58
+#define GSREDIR 59
+#define CATASSIGN 60