3 * (C) Copyright May 7 1995, Edmond J. Breen.
5 * This code may be copied for personal, non-profit use only.
9 typedef enum { /* Stack Machine Instruction Set */
14 /* If jumps are altered, added to or rearranged,
15 * then check with the routine analyseCode -
19 __eicsetjmp, __eiclongjmp,
22 jmpFint, jmpFlng, jmpFdbl, jmpFptr, jmpFllng,
23 jmpTint, jmpTlng, jmpTdbl, jmpTptr, jmpTllng,
54 drefdouble, refdouble,
55 negdouble, adddouble, subdouble, divdouble, multdouble,
56 ltdouble, ledouble, eqdouble, nedouble, gtdouble,
57 gedouble, lordouble, landdouble, notdouble,
58 double2char, double2int, double2long, double2llong, double2float,
64 negint, addint, subint, divint, multint,
65 ltint, leint, eqint, neint, gtint,
66 geint, lorint, landint, notint, andint, borint,
67 xorint, modint, lshtint, rshtint, compint,
68 int2uchar, int2ushort, int2ptr, int2double,
74 neguint, adduint, subuint, divuint, multuint,
75 ltuint, leuint, equint, neuint, gtuint,
76 geuint, loruint, notuint, anduint, boruint,
77 xoruint, moduint, lshtuint, rshtuint, compuint,
78 uint2char, uint2ptr, uint2double,
79 uint2long, uint2llong,
84 neglong, addlong, sublong, divlong, multlong,
85 ltlong, lelong, eqlong, nelong, gtlong,
86 gelong, lorlong, landlong, notlong, andlong, borlong,
87 xorlong, modlong, lshtlong, rshtlong, complong,
88 long2char, long2int, long2ptr, long2double,
94 negulong, addulong, subulong, divulong, multulong,
95 ltulong, leulong, equlong, neulong, gtulong,
96 geulong, lorulong, notulong, andulong, borulong,
97 xorulong, modulong, lshtulong, rshtulong, compulong,
98 ulong2char, ulong2int, ulong2ptr, ulong2double,
104 negllong, addllong, subllong, divllong, multllong,
105 ltllong, lellong, eqllong, nellong, gtllong,
106 gellong, lorllong, landllong, notllong, andllong, borllong,
107 xorllong, modllong, lshtllong, rshtllong, compllong,
108 llong2char, llong2int, llong2long, llong2ptr, llong2double,
111 drefptr, refptr, incptr, decptr,
113 addptr2int, addint2ptr, subptrint,
115 ltptr, leptr, eqptr, neptr, gtptr,
116 geptr, lorptr, landptr, notptr,
119 drefuchar, drefchar, refchar, neguchar,
122 char2int, char2ptr, char2double,
124 drefushort, drefshort, refshort,
132 massign, fmem, mset, minit,
133 refmem, reducear, checkar, checkar2,
134 call, eiccall, endfunc, eicreturn, empty,
139 /* unique unsafe pointer instructions */
146 #define IsSto_op(x) ((x) >= stochar && (x)<=stoval)