diff options
author | Joe Hunkeler <jhunkeler@gmail.com> | 2015-08-11 16:51:37 -0400 |
---|---|---|
committer | Joe Hunkeler <jhunkeler@gmail.com> | 2015-08-11 16:51:37 -0400 |
commit | 40e5a5811c6ffce9b0974e93cdd927cbcf60c157 (patch) | |
tree | 4464880c571602d54f6ae114729bf62a89518057 /pkg/cl/opcodes.h | |
download | iraf-osx-40e5a5811c6ffce9b0974e93cdd927cbcf60c157.tar.gz |
Repatch (from linux) of OSX IRAF
Diffstat (limited to 'pkg/cl/opcodes.h')
-rw-r--r-- | pkg/cl/opcodes.h | 95 |
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 |