SeExpr
|
#include <Interpreter.h>
Public Types | |
typedef std::map< const ExprLocalVar *, int > | VarToLoc |
Not needed for eval only building. | |
typedef int(* | OpF) (int *, double *, char **, std::vector< int > &) |
Op function pointer arguments are (int* currOpData,double* currD,char** c,std::stack<int>& callStackurrS) | |
Public Member Functions | |
Interpreter () | |
int | nextPC () |
Return the position that the next instruction will be placed at. | |
int | addOp (OpF op) |
! adds an operator to the program (pointing to the data at the current location) | |
void | endOp (bool execute=true) |
int | addOperand (int param) |
! Adds an operand. Note this should be done after doing the addOp! | |
int | allocFP (int n) |
! Allocate a floating point set of data of dimension n | |
int | allocPtr () |
Allocate a pointer location (can be anything, but typically space for char*) | |
void | eval (VarBlock *varBlock, bool debug=false) |
Evaluate program. | |
void | print (int pc=-1) const |
Debug by printing program. | |
void | setPCStart (int pcStart) |
Public Attributes | |
std::vector< double > | d |
Double data (constants and evaluated) | |
std::vector< char * > | s |
constant and evaluated pointer data | |
std::vector< int > | opData |
Ooperands to op. | |
VarToLoc | varToLoc |
std::vector< std::pair< OpF, int > > | ops |
std::vector< int > | callStack |
Private Attributes | |
bool | _startedOp |
int | _pcStart |
Non-LLVM manual interpreter. This is a simple computation machine. There are no dynamic activation records just fixed locations, because we have no recursion!
Definition at line 40 of file Interpreter.h.
Op function pointer arguments are (int* currOpData,double* currD,char** c,std::stack<int>& callStackurrS)
Definition at line 54 of file Interpreter.h.
typedef std::map<const ExprLocalVar*, int> SeExpr2::Interpreter::VarToLoc |
Not needed for eval only building.
Definition at line 50 of file Interpreter.h.
|
inline |
Definition at line 64 of file Interpreter.h.
References s.
! adds an operator to the program (pointing to the data at the current location)
Definition at line 73 of file Interpreter.h.
References _startedOp, opData, and ops.
Referenced by SeExpr2::Expression::prep().
! Adds an operand. Note this should be done after doing the addOp!
Definition at line 96 of file Interpreter.h.
References _startedOp, and opData.
Referenced by SeExpr2::Expression::prep().
! Allocate a floating point set of data of dimension n
Definition at line 104 of file Interpreter.h.
References d.
Referenced by SeExpr2::Expression::prep().
|
inline |
Allocate a pointer location (can be anything, but typically space for char*)
Definition at line 111 of file Interpreter.h.
References s.
Definition at line 83 of file Interpreter.h.
References _startedOp, callStack, d, opData, ops, and s.
Referenced by SeExpr2::Expression::prep().
Evaluate program.
Definition at line 31 of file Interpreter.cpp.
References _pcStart, callStack, d, opData, ops, print(), and s.
Referenced by SeExpr2::Expression::evalFP(), and SeExpr2::Expression::evalStr().
|
inline |
Return the position that the next instruction will be placed at.
Definition at line 70 of file Interpreter.h.
References ops.
Debug by printing program.
Definition at line 69 of file Interpreter.cpp.
References d, opData, ops, and s.
Referenced by SeExpr2::Expression::debugPrintInterpreter(), eval(), and SeExpr2::Expression::prep().
Definition at line 122 of file Interpreter.h.
References _pcStart.
|
private |
Definition at line 61 of file Interpreter.h.
Referenced by eval(), and setPCStart().
|
private |
Definition at line 60 of file Interpreter.h.
Referenced by addOp(), addOperand(), and endOp().
std::vector<int> SeExpr2::Interpreter::callStack |
Definition at line 57 of file Interpreter.h.
std::vector<double> SeExpr2::Interpreter::d |
Double data (constants and evaluated)
Definition at line 43 of file Interpreter.h.
Referenced by allocFP(), endOp(), eval(), SeExpr2::Expression::evalFP(), and print().
std::vector<int> SeExpr2::Interpreter::opData |
Ooperands to op.
Definition at line 47 of file Interpreter.h.
Referenced by addOp(), addOperand(), endOp(), eval(), and print().
std::vector<char*> SeExpr2::Interpreter::s |
constant and evaluated pointer data
Definition at line 45 of file Interpreter.h.
Referenced by allocPtr(), endOp(), eval(), SeExpr2::Expression::evalStr(), Interpreter(), and print().
VarToLoc SeExpr2::Interpreter::varToLoc |
Definition at line 51 of file Interpreter.h.