Main Page | Class List | Directories | File List | Class Members | File Members

interpreter.h File Reference

#include "interpret_functions.h"

Go to the source code of this file.

Defines

#define JUMP_DONE   DONE
#define CASE(X)   case (X)-F_OFFSET:
#define DONE   break
#define FETCH
#define LOW_GET_ARG()   ((PROG_COUNTER++)[0])
#define LOW_GET_JUMP()   (PROG_COUNTER[0])
#define LOW_SKIPJUMP()   (++PROG_COUNTER)
#define GET_ARG()   (instr=prefix,prefix=0,instr+LOW_GET_ARG())
#define GET_ARG2()   (instr=prefix2,prefix2=0,instr+LOW_GET_ARG())
#define LOCAL_VAR(X)
#define INTERPRETER
#define OPCODE0(OP, DESC, FLAGS, CODE)   CASE(OP); CODE; DONE
#define OPCODE1(OP, DESC, FLAGS, CODE)
#define OPCODE2(OP, DESC, FLAGS, CODE)
#define OPCODE0_ALIAS(OP, DESC, FLAGS, FUN)   OPCODE0(OP, DESC, FLAGS, {FUN();})
#define OPCODE1_ALIAS(OP, DESC, FLAGS, FUN)   OPCODE1(OP, DESC, FLAGS, {FUN(arg1);})
#define OPCODE2_ALIAS(OP, DESC, FLAGS, FUN)   OPCODE2(OP, DESC, FLAGS, {FUN(arg1, arg2);})
#define OPCODE0_TAIL(OP, DESC, FLAGS, CODE)   CASE(OP); CODE
#define OPCODE1_TAIL(OP, DESC, FLAGS, CODE)   CASE(OP); CODE
#define OPCODE2_TAIL(OP, DESC, FLAGS, CODE)   CASE(OP); CODE
#define OPCODE0_JUMP   OPCODE0
#define OPCODE1_JUMP   OPCODE1
#define OPCODE2_JUMP   OPCODE2
#define OPCODE0_TAILJUMP   OPCODE0_TAIL
#define OPCODE1_TAILJUMP   OPCODE1_TAIL
#define OPCODE2_TAILJUMP   OPCODE2_TAIL
#define OPCODE0_RETURN(OP, DESC, FLAGS, CODE)   OPCODE0(OP, DESC, FLAGS, CODE)
#define OPCODE1_RETURN(OP, DESC, FLAGS, CODE)   OPCODE1(OP, DESC, FLAGS, CODE)
#define OPCODE2_RETURN(OP, DESC, FLAGS, CODE)   OPCODE2(OP, DESC, FLAGS, CODE)
#define OPCODE0_TAILRETURN(OP, DESC, FLAGS, CODE)   OPCODE0_TAIL(OP, DESC, FLAGS, CODE)
#define OPCODE1_TAILRETURN(OP, DESC, FLAGS, CODE)   OPCODE1_TAIL(OP, DESC, FLAGS, CODE)
#define OPCODE2_TAILRETURN(OP, DESC, FLAGS, CODE)   OPCODE2_TAIL(OP, DESC, FLAGS, CODE)
#define OPCODE0_PTRJUMP(OP, DESC, FLAGS, CODE)   CASE(OP); CODE; DONE
#define OPCODE0_TAILPTRJUMP(OP, DESC, FLAGS, CODE)   CASE(OP); CODE
#define OPCODE1_PTRJUMP(OP, DESC, FLAGS, CODE)
#define OPCODE2_PTRJUMP(OP, DESC, FLAGS, CODE)
#define OPCODE1_TAILPTRJUMP(OP, DESC, FLAGS, CODE)   CASE(OP); CODE
#define OPCODE2_TAILPTRJUMP(OP, DESC, FLAGS, CODE)   CASE(OP); CODE
#define OPCODE0_BRANCH   OPCODE0_PTRJUMP
#define OPCODE1_BRANCH   OPCODE1_PTRJUMP
#define OPCODE2_BRANCH   OPCODE2_PTRJUMP
#define OPCODE0_TAILBRANCH   OPCODE0_TAILPTRJUMP
#define OPCODE1_TAILBRANCH   OPCODE1_TAILPTRJUMP
#define OPCODE2_TAILBRANCH   OPCODE2_TAILPTRJUMP


Define Documentation

#define CASE  )     case (X)-F_OFFSET:
 

#define DONE   break
 

#define FETCH
 

 
#define GET_ARG  )     (instr=prefix,prefix=0,instr+LOW_GET_ARG())
 

 
#define GET_ARG2  )     (instr=prefix2,prefix2=0,instr+LOW_GET_ARG())
 

#define INTERPRETER
 

#define JUMP_DONE   DONE
 

#define LOCAL_VAR  ) 
 

 
#define LOW_GET_ARG  )     ((PROG_COUNTER++)[0])
 

 
#define LOW_GET_JUMP  )     (PROG_COUNTER[0])
 

 
#define LOW_SKIPJUMP  )     (++PROG_COUNTER)
 

#define OPCODE0 OP,
DESC,
FLAGS,
CODE   )     CASE(OP); CODE; DONE
 

#define OPCODE0_ALIAS OP,
DESC,
FLAGS,
FUN   )     OPCODE0(OP, DESC, FLAGS, {FUN();})
 

#define OPCODE0_BRANCH   OPCODE0_PTRJUMP
 

#define OPCODE0_JUMP   OPCODE0
 

#define OPCODE0_PTRJUMP OP,
DESC,
FLAGS,
CODE   )     CASE(OP); CODE; DONE
 

#define OPCODE0_RETURN OP,
DESC,
FLAGS,
CODE   )     OPCODE0(OP, DESC, FLAGS, CODE)
 

#define OPCODE0_TAIL OP,
DESC,
FLAGS,
CODE   )     CASE(OP); CODE
 

#define OPCODE0_TAILBRANCH   OPCODE0_TAILPTRJUMP
 

#define OPCODE0_TAILJUMP   OPCODE0_TAIL
 

#define OPCODE0_TAILPTRJUMP OP,
DESC,
FLAGS,
CODE   )     CASE(OP); CODE
 

#define OPCODE0_TAILRETURN OP,
DESC,
FLAGS,
CODE   )     OPCODE0_TAIL(OP, DESC, FLAGS, CODE)
 

#define OPCODE1 OP,
DESC,
FLAGS,
CODE   ) 
 

Value:

CASE(OP); { \
    arg1=GET_ARG(); \
    FETCH; \
    CODE; \
  } DONE

#define OPCODE1_ALIAS OP,
DESC,
FLAGS,
FUN   )     OPCODE1(OP, DESC, FLAGS, {FUN(arg1);})
 

#define OPCODE1_BRANCH   OPCODE1_PTRJUMP
 

#define OPCODE1_JUMP   OPCODE1
 

#define OPCODE1_PTRJUMP OP,
DESC,
FLAGS,
CODE   ) 
 

Value:

CASE(OP); { \
    arg1=GET_ARG(); \
    FETCH; \
    CODE; \
  } DONE

#define OPCODE1_RETURN OP,
DESC,
FLAGS,
CODE   )     OPCODE1(OP, DESC, FLAGS, CODE)
 

#define OPCODE1_TAIL OP,
DESC,
FLAGS,
CODE   )     CASE(OP); CODE
 

#define OPCODE1_TAILBRANCH   OPCODE1_TAILPTRJUMP
 

#define OPCODE1_TAILJUMP   OPCODE1_TAIL
 

#define OPCODE1_TAILPTRJUMP OP,
DESC,
FLAGS,
CODE   )     CASE(OP); CODE
 

#define OPCODE1_TAILRETURN OP,
DESC,
FLAGS,
CODE   )     OPCODE1_TAIL(OP, DESC, FLAGS, CODE)
 

#define OPCODE2 OP,
DESC,
FLAGS,
CODE   ) 
 

Value:

CASE(OP); { \
    arg1=GET_ARG(); \
    arg2=GET_ARG2(); \
    FETCH; \
    CODE; \
  } DONE

#define OPCODE2_ALIAS OP,
DESC,
FLAGS,
FUN   )     OPCODE2(OP, DESC, FLAGS, {FUN(arg1, arg2);})
 

#define OPCODE2_BRANCH   OPCODE2_PTRJUMP
 

#define OPCODE2_JUMP   OPCODE2
 

#define OPCODE2_PTRJUMP OP,
DESC,
FLAGS,
CODE   ) 
 

Value:

CASE(OP); { \
    arg1=GET_ARG(); \
    arg2=GET_ARG2(); \
    FETCH; \
    CODE; \
  } DONE

#define OPCODE2_RETURN OP,
DESC,
FLAGS,
CODE   )     OPCODE2(OP, DESC, FLAGS, CODE)
 

#define OPCODE2_TAIL OP,
DESC,
FLAGS,
CODE   )     CASE(OP); CODE
 

#define OPCODE2_TAILBRANCH   OPCODE2_TAILPTRJUMP
 

#define OPCODE2_TAILJUMP   OPCODE2_TAIL
 

#define OPCODE2_TAILPTRJUMP OP,
DESC,
FLAGS,
CODE   )     CASE(OP); CODE
 

#define OPCODE2_TAILRETURN OP,
DESC,
FLAGS,
CODE   )     OPCODE2_TAIL(OP, DESC, FLAGS, CODE)
 


Generated on Fri Jul 22 23:44:29 2005 for Pike by  doxygen 1.3.9.1