/* EPC Imp to C Translation Release 4 Version Apr 95 */ #include "imptoc.h" /* Copyright (c) 1988 Edinburgh Portable Compilers Ltd. All Rights Reserved. */ /**/ /* ECODES */ /* ------ */ /**/ /* Author : Geoff Millard Created on : 09 Feb 88 */ /**/ /* Modifications : */ /**/ /* Date Dev Vers Description of Modification */ /* ---- --- ---- --------------------------- */ /* 17-11-93 pds 36 Added SETOPTIONs for Pascal & EADDRITIEM */ /* 04/11/92 AK 35.1 Added EIMERGE1, ERMERGE1, EMERGE2, */ /* and DCXMERGE for Fortran90 */ /* 06/08/91 AK 35 Renamed ecodes33.6 */ /* 02/04/91 RT 33.6 Removed ECCOps LOGVAL,LOGSTK and LOGNEG */ /* 05/12/90 RT 33.5 Added ECOps CJTRUE, CJFALSE, CDUPADD and CDUPSUB */ /* 18/04/90 CMcP 33.4 Add Pascal-E operators STRTOCH,STRPLUS,STRMOVE,PUSHSTR*/ /* 09/03/90 GM 33.3 Add operator DCXUCHECK */ /* 22/02/90 TR 33.2 Renumber the bit Pasops since pascal-I/E conflict */ /* 28/01/90 AK 33.1 Merge Pascal changes (from 32.6) */ /* 07/01/90 GM 33 Common version */ /* 25/01/90 TR 32.6 Add BITADDR for Pascal */ /* 23/01/90 TR 32.6 Add SAVEBITREF and RESTBITREF for Pascal */ /* 22/01/90 TR 32.6 Add UPBITII, UPBITUU, UPBITIU, UPBITUI for Pascal */ /* and rename INDEXP as INDEXBITS */ /* 18/12/89 AK 32.5 Merge Pascal changes */ /* 01/12/89 TR 32 Reinstate BNOT as generic EOP */ /* 28/11/89 TR 32 Add PasOps RCHKRNG and RCHKXX */ /* 30/11/89 GM 32.4 Merge Pascal changes */ /* 30/10/89 TR 32 Add PasOp CHKUOVF to complement CHKIOVF */ /* 27/10/89 AJH 32 Add PasOps BAND BOR BNOT */ /* 22/11/89 GM 32.2 Add direct complex ops */ /* 29/08/89 AJH 32 Reduced set of Pascal/Modula ecodes */ /* 09/08/89 TR 32 Rename PIMOD to INMOD and add UNMOD & IMDIV */ /* 24/05/89 TR 32 Add SETSD, SETINCL, SETEXCL & remove SETEMPTY */ /* 28/02/89 GB 32 Add operator PSEUDONOP */ /* 09/12/88 GB 31 Add operator GATHER */ /* 04/12/88 GB 30 Add operators FORCE, ENDFORCE */ /* 11/10/88 GB 30 Add operator VCSEDEF */ /* 07/06/88 GB 29 Add operator VVSUB */ /* 04/09/88 GM 28 Basis version for tracking changes */ /**/ #define HALT 0 /*00*/ /**/ /*--------------------------------------- generic int operations ------- */ /**/ #define IADD 1 /*01*/ /* (Etos-1) + (Etos) => (Etos) */ #define ISUB 2 /*02*/ /* (Etos-1) - (Etos) => (Etos) */ #define IMULT 3 /*03*/ /* (Etos-1) * (Etos) => (Etos) */ #define IDIV 4 /*04*/ /* (Etos-1) / (Etos) => (Etos) */ #define INEG 5 /*05*/ /* - (Etos) => (Etos) */ #define IABS 6 /*06*/ /* abs( (Etos) ) => (Etos) */ #define IREM 7 /*07*/ /* remainder from */ /* (Etos-1) / (Etos)=> (Etos) */ /**/ #define IAND 8 /*08*/ /* (Etos-1) & (Etos) => (Etos) */ #define IOR 9 /*09*/ /* (Etos-1) ! (Etos) => (Etos) */ #define INOT 10 /*0A*/ /* ~ (Etos) => (Etos) */ #define IXOR 11 /*0B*/ /* (Etos-1) !! (Etos) => (Etos) */ #define ISHLL 12/*0C*/ /* (Etos-1) << (Etos) => (Etos) */ #define ISHRL 13/*0D*/ /* (Etos-1) >> (Etos) => (Etos) */ #define ISHLA 14/*0E*/ /* arithmetic left shift */ #define ISHRA 15/*0F*/ /* arithmetic right shift */ /**/ #define IGT 16 /*10*/ /* if */ #define ILT 17 /*11*/ /* (Etos-1) (Etos) */ #define IEQ 18 /*12*/ /* then */ #define INE 19 /*13*/ /* true (1) => (Etos) */ #define IGE 20 /*14*/ /* else */ #define ILE 21 /*15*/ /* false (0) => (Etos) */ #define BNOT 22 /*16*/ /* (Etos) = BNOT (Etos) 0<->1 */ /**/ #define JIGT 24 /*18*/ /* if */ #define JILT 25 /*19*/ /* (Etos-1) (Etos) */ #define JIEQ 26 /*1A*/ /* then */ #define JINE 27 /*1B*/ /* ->