File: code.h

package info (click to toggle)
felt 3.06-9
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 17,512 kB
  • ctags: 7,946
  • sloc: ansic: 85,476; fortran: 3,614; yacc: 2,803; lex: 1,178; makefile: 305; sh: 302
file content (92 lines) | stat: -rw-r--r-- 3,334 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/*
    This file is part of the FElt finite element analysis package.
    Copyright (C) 1993-2000 Jason I. Gobat and Darren C. Atkinson

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

/************************************************************************
 * File:	code.h							*
 *									*
 * Description:	This file contains the public function and type		*
 *		declarations for the stack machine code.		*
 ************************************************************************/

# ifndef _CODE_H
# define _CODE_H
# include "proto.h"

typedef union instruction *Code;

typedef enum {
    JmpOp,		/* unconditional jump	    */
    JnzOp,		/* jump if not zero	    */
    JzOp,		/* jump if zero		    */
    PushOp,		/* push value		    */
    PopOp,		/* pop top of stack	    */
    CopyOp,		/* copy top of stack	    */
    TestOp,		/* test top of stack	    */
    NegOp,		/* unary negation	    */
    NotOp,		/* logical negation	    */
    InvOp,		/* bitwise negation	    */
    MulOp,		/* multiplication	    */
    DivOp,		/* division		    */
    ModOp,		/* modulo		    */
    AddOp,		/* addition		    */
    SubOp,		/* subtraction		    */
    LsftOp,		/* left shift		    */
    RsftOp,		/* right shift		    */
    LtOp,		/* less than		    */
    GtOp,		/* greater than		    */
    LteqOp,		/* less than or equal	    */
    GteqOp,		/* greater than or equal    */
    EqOp,		/* equality		    */
    NeqOp,		/* inequality		    */
    AndOp,		/* bitwise and		    */
    XorOp,		/* bitwise xor		    */
    OrOp,		/* bitwise or		    */
    TimeOp,		/* current time		    */
    SinOp,		/* sin function		    */
    CosOp,		/* cos function		    */
    TanOp,		/* tan function		    */
    ExpOp,		/* exp function		    */
    LnOp,		/* log function		    */
    LogOp,		/* log10 function	    */
    PowOp,		/* pow function		    */
    SqrtOp,		/* sqrt function	    */
    HypotOp,		/* hypot function	    */
    FloorOp,		/* floor function	    */
    CeilOp,		/* ceil function	    */
    FmodOp,		/* fmod function	    */
    FabsOp,		/* fabs function	    */
    TableOp,		/* table of values	    */
    CycleOp,		/* circular table of values */
    HaltOp		/* halt execution	    */
} Opcode;


extern Code   InCore;
extern void   EmitCode	   PROTO ((Opcode, ...));
extern Code   CopyCode     PROTO ((Code));
extern void   FreeCode     PROTO ((Code));
extern double EvalCode     PROTO ((Code, double));
extern void   DebugCode    PROTO ((Code));
extern int    CompileCode  PROTO ((char *));
extern int    IsConstant   PROTO ((Code));
extern void   SetIP	   PROTO ((int));
extern int    GetIP	   PROTO ((void));
extern double exptod	   PROTO ((char *, char **));

# endif /* _CODE_H */