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

opcodes.h File Reference

#include "pikecode.h"
#include "operators.h"
#include "sscanf.h"
#include "interpret_protos.h"

Go to the source code of this file.

Classes

struct  keyword
struct  instr

Defines

#define I_HASARG   1
#define I_POINTER   2
#define I_JUMP   4
#define I__DATA   8
#define I_HASARG2   16
#define I_HASPOINTER   32
#define I_BRANCH   128
#define I_UPDATE_SP   256
#define I_UPDATE_FP   512
#define I_UPDATE_M_SP   1024
#define I_TWO_ARGS   (I_HASARG | I_HASARG2)
#define I_DATA   (I_HASARG | I__DATA)
#define I_ISPOINTER   (I_HASARG | I_POINTER)
#define I_ISJUMP   (I_JUMP)
#define I_ISJUMPARG   (I_HASARG | I_JUMP)
#define I_ISJUMPARGS   (I_TWO_ARGS | I_JUMP)
#define I_ISPTRJUMP   (I_HASARG | I_POINTER | I_JUMP)
#define I_ISPTRJUMPARG   (I_HASARG | I_HASPOINTER | I_JUMP)
#define I_ISPTRJUMPARGS   (I_TWO_ARGS | I_HASPOINTER | I_JUMP)
#define I_ISBRANCH   (I_HASARG | I_POINTER | I_JUMP | I_BRANCH)
#define I_ISBRANCHARG   (I_HASARG | I_HASPOINTER | I_JUMP | I_BRANCH)
#define I_ISBRANCHARGS   (I_TWO_ARGS | I_HASPOINTER | I_JUMP | I_BRANCH)
#define I_IS_MASK   (I_TWO_ARGS | I_POINTER | I_HASPOINTER | I_JUMP)
#define I_UPDATE_ALL   (I_UPDATE_SP | I_UPDATE_FP | I_UPDATE_M_SP)
#define ADD_COMPILED(X)
#define ADD_RUNNED(X)
#define OPCODE0(X, Y, F)   X,
#define OPCODE1(X, Y, F)   X,
#define OPCODE2(X, Y, F)   X,
#define OPCODE0_TAIL(X, Y, F)   X,
#define OPCODE1_TAIL(X, Y, F)   X,
#define OPCODE2_TAIL(X, Y, F)   X,
#define OPCODE0_JUMP(X, Y, F)   X,
#define OPCODE1_JUMP(X, Y, F)   X,
#define OPCODE2_JUMP(X, Y, F)   X,
#define OPCODE0_TAILJUMP(X, Y, F)   X,
#define OPCODE1_TAILJUMP(X, Y, F)   X,
#define OPCODE2_TAILJUMP(X, Y, F)   X,
#define OPCODE0_PTRJUMP(X, Y, F)   X,
#define OPCODE1_PTRJUMP(X, Y, F)   X,
#define OPCODE2_PTRJUMP(X, Y, F)   X,
#define OPCODE0_TAILPTRJUMP(X, Y, F)   X,
#define OPCODE1_TAILPTRJUMP(X, Y, F)   X,
#define OPCODE2_TAILPTRJUMP(X, Y, F)   X,
#define OPCODE0_RETURN(X, Y, F)   X,
#define OPCODE1_RETURN(X, Y, F)   X,
#define OPCODE2_RETURN(X, Y, F)   X,
#define OPCODE0_TAILRETURN(X, Y, F)   X,
#define OPCODE1_TAILRETURN(X, Y, F)   X,
#define OPCODE2_TAILRETURN(X, Y, F)   X,
#define OPCODE0_BRANCH(X, Y, F)   X,
#define OPCODE1_BRANCH(X, Y, F)   X,
#define OPCODE2_BRANCH(X, Y, F)   X,
#define OPCODE0_TAILBRANCH(X, Y, F)   X,
#define OPCODE1_TAILBRANCH(X, Y, F)   X,
#define OPCODE2_TAILBRANCH(X, Y, F)   X,
#define OPCODE0_ALIAS(X, Y, F, A)   X,
#define OPCODE1_ALIAS(X, Y, F, A)   X,
#define OPCODE2_ALIAS(X, Y, F, A)   X,
#define get_opcode_name(n)   get_f_name(n + F_OFFSET)

Enumerations

enum  Pike_opcodes {
  F_OFFSET = 257, F_PREFIX_256, F_PREFIX_512, F_PREFIX_768,
  F_PREFIX_1024, F_PREFIX_CHARX256, F_PREFIX_WORDX256, F_PREFIX_24BITX256,
  F_PREFIX2_256, F_PREFIX2_512, F_PREFIX2_768, F_PREFIX2_1024,
  F_PREFIX2_CHARX256, F_PREFIX2_WORDX256, F_PREFIX2_24BITX256, F_MARK_AND_STRING,
  string, F_STRING, string, F_MARK_AND_GLOBAL,
  global, F_GLOBAL, global, F_MARK_AND_EXTERNAL,
  external, F_EXTERNAL, external, F_MARK2,
  mark, F_SYNCH_MARK, mark, F_MARK,
  mark, F_CLEANUP_SYNCH_MARK, mark, F_POP_SYNCH_MARK,
  mark, F_BRANCH_IF_NOT_LOCAL_ARROW, x, F_BRANCH_WHEN_ZERO,
  zero, F_CALL_LFUN, lfun, F_CALL_LFUN_AND_POP,
  pop, F_CALL_LFUN_AND_RETURN, return, F_MARK_CALL_LFUN,
  mark, lfun, F_MARK_CALL_LFUN_AND_POP, mark,
  pop, F_MARK_CALL_LFUN_AND_RETURN, mark, return,
  F_APPLY, apply, F_APPLY_AND_POP, pop,
  F_APPLY_AND_RETURN, return, F_MARK_APPLY, mark,
  apply, F_MARK_APPLY_AND_POP, mark, pop,
  F_MARK_APPLY_AND_RETURN, mark, return, F_CALL_FUNCTION,
  function, F_CALL_FUNCTION_AND_POP, pop, F_CALL_FUNCTION_AND_RETURN,
  return, F_COND_RECUR, overloaded, F_RECUR,
  recur, F_ENTRY, F_MAX_OPCODE, F_ADD_EQ,
  F_AND_EQ, F_ARG_LIST, F_COMMA_EXPR, F_BREAK,
  F_CASE, F_CASE_RANGE, F_CONTINUE, F_DEFAULT,
  F_DIV_EQ, F_DO, F_EFUN_CALL, F_FOR,
  F_IDENTIFIER, F_LSH_EQ, F_LVALUE_LIST, F_MOD_EQ,
  F_MULT_EQ, F_OR_EQ, F_RSH_EQ, F_SUB_EQ,
  F_VAL_LVAL, F_XOR_EQ, F_NOP, F_RANGE_FROM_BEG,
  F_RANGE_FROM_END, F_RANGE_OPEN, F_ALIGN, F_POINTER,
  F_LABEL, F_NORMAL_STMT_LABEL, F_CUSTOM_STMT_LABEL, F_DATA,
  F_START_FUNCTION, F_BYTE, F_NOTREACHED, F_AUTO_MAP_MARKER,
  F_AUTO_MAP, F_VOLATILE_RETURN, F_MAX_INSTR, F_FILENAME,
  F_LINE
}

Functions

const char * low_get_f_name (int n, struct program *p)
const char * get_f_name (int n)
const char * get_token_name (int n)
void init_opcodes (void)
void exit_opcodes (void)

Variables

instr instrs []


Define Documentation

#define ADD_COMPILED  ) 
 

#define ADD_RUNNED  ) 
 

#define get_opcode_name  )     get_f_name(n + F_OFFSET)
 

#define I__DATA   8
 

#define I_BRANCH   128
 

#define I_DATA   (I_HASARG | I__DATA)
 

#define I_HASARG   1
 

#define I_HASARG2   16
 

#define I_HASPOINTER   32
 

#define I_IS_MASK   (I_TWO_ARGS | I_POINTER | I_HASPOINTER | I_JUMP)
 

#define I_ISBRANCH   (I_HASARG | I_POINTER | I_JUMP | I_BRANCH)
 

#define I_ISBRANCHARG   (I_HASARG | I_HASPOINTER | I_JUMP | I_BRANCH)
 

#define I_ISBRANCHARGS   (I_TWO_ARGS | I_HASPOINTER | I_JUMP | I_BRANCH)
 

#define I_ISJUMP   (I_JUMP)
 

#define I_ISJUMPARG   (I_HASARG | I_JUMP)
 

#define I_ISJUMPARGS   (I_TWO_ARGS | I_JUMP)
 

#define I_ISPOINTER   (I_HASARG | I_POINTER)
 

#define I_ISPTRJUMP   (I_HASARG | I_POINTER | I_JUMP)
 

#define I_ISPTRJUMPARG   (I_HASARG | I_HASPOINTER | I_JUMP)
 

#define I_ISPTRJUMPARGS   (I_TWO_ARGS | I_HASPOINTER | I_JUMP)
 

#define I_JUMP   4
 

#define I_POINTER   2
 

#define I_TWO_ARGS   (I_HASARG | I_HASARG2)
 

#define I_UPDATE_ALL   (I_UPDATE_SP | I_UPDATE_FP | I_UPDATE_M_SP)
 

#define I_UPDATE_FP   512
 

#define I_UPDATE_M_SP   1024
 

int I_UPDATE_SP   256
 

#define OPCODE0 X,
Y,
 )     X,
 

#define OPCODE0_ALIAS X,
Y,
F,
 )     X,
 

#define OPCODE0_BRANCH X,
Y,
 )     X,
 

#define OPCODE0_JUMP X,
Y,
 )     X,
 

#define OPCODE0_PTRJUMP X,
Y,
 )     X,
 

#define OPCODE0_RETURN X,
Y,
 )     X,
 

#define OPCODE0_TAIL X,
Y,
 )     X,
 

#define OPCODE0_TAILBRANCH X,
Y,
 )     X,
 

#define OPCODE0_TAILJUMP X,
Y,
 )     X,
 

#define OPCODE0_TAILPTRJUMP X,
Y,
 )     X,
 

#define OPCODE0_TAILRETURN X,
Y,
 )     X,
 

#define OPCODE1 X,
Y,
 )     X,
 

#define OPCODE1_ALIAS X,
Y,
F,
 )     X,
 

#define OPCODE1_BRANCH X,
Y,
 )     X,
 

#define OPCODE1_JUMP X,
Y,
 )     X,
 

#define OPCODE1_PTRJUMP X,
Y,
 )     X,
 

#define OPCODE1_RETURN X,
Y,
 )     X,
 

#define OPCODE1_TAIL X,
Y,
 )     X,
 

#define OPCODE1_TAILBRANCH X,
Y,
 )     X,
 

#define OPCODE1_TAILJUMP X,
Y,
 )     X,
 

#define OPCODE1_TAILPTRJUMP X,
Y,
 )     X,
 

#define OPCODE1_TAILRETURN X,
Y,
 )     X,
 

#define OPCODE2 X,
Y,
 )     X,
 

#define OPCODE2_ALIAS X,
Y,
F,
 )     X,
 

#define OPCODE2_BRANCH X,
Y,
 )     X,
 

#define OPCODE2_JUMP X,
Y,
 )     X,
 

#define OPCODE2_PTRJUMP X,
Y,
 )     X,
 

#define OPCODE2_RETURN X,
Y,
 )     X,
 

#define OPCODE2_TAIL X,
Y,
 )     X,
 

#define OPCODE2_TAILBRANCH X,
Y,
 )     X,
 

#define OPCODE2_TAILJUMP X,
Y,
 )     X,
 

#define OPCODE2_TAILPTRJUMP X,
Y,
 )     X,
 

#define OPCODE2_TAILRETURN X,
Y,
 )     X,
 


Enumeration Type Documentation

enum Pike_opcodes
 

Enumeration values:
F_OFFSET 
F_PREFIX_256 
F_PREFIX_512 
F_PREFIX_768 
F_PREFIX_1024 
F_PREFIX_CHARX256 
F_PREFIX_WORDX256 
F_PREFIX_24BITX256 
F_PREFIX2_256 
F_PREFIX2_512 
F_PREFIX2_768 
F_PREFIX2_1024 
F_PREFIX2_CHARX256 
F_PREFIX2_WORDX256 
F_PREFIX2_24BITX256 
F_MARK_AND_STRING 
string 
F_STRING 
string 
F_MARK_AND_GLOBAL 
global 
F_GLOBAL 
global 
F_MARK_AND_EXTERNAL 
external 
F_EXTERNAL 
external 
F_MARK2 
mark 
F_SYNCH_MARK 
mark 
F_MARK 
mark 
F_CLEANUP_SYNCH_MARK 
mark 
F_POP_SYNCH_MARK 
mark 
F_BRANCH_IF_NOT_LOCAL_ARROW 
x 
F_BRANCH_WHEN_ZERO 
zero 
F_CALL_LFUN 
lfun 
F_CALL_LFUN_AND_POP 
pop 
F_CALL_LFUN_AND_RETURN 
return 
F_MARK_CALL_LFUN 
mark 
lfun 
F_MARK_CALL_LFUN_AND_POP 
mark 
pop 
F_MARK_CALL_LFUN_AND_RETURN 
mark 
return 
F_APPLY 
apply 
F_APPLY_AND_POP 
pop 
F_APPLY_AND_RETURN 
return 
F_MARK_APPLY 
mark 
apply 
F_MARK_APPLY_AND_POP 
mark 
pop 
F_MARK_APPLY_AND_RETURN 
mark 
return 
F_CALL_FUNCTION 
function 
F_CALL_FUNCTION_AND_POP 
pop 
F_CALL_FUNCTION_AND_RETURN 
return 
F_COND_RECUR 
overloaded 
F_RECUR 
recur 
F_ENTRY 
F_MAX_OPCODE 
F_ADD_EQ 
F_AND_EQ 
F_ARG_LIST 
F_COMMA_EXPR 
F_BREAK 
F_CASE 
F_CASE_RANGE 
F_CONTINUE 
F_DEFAULT 
F_DIV_EQ 
F_DO 
F_EFUN_CALL 
F_FOR 
F_IDENTIFIER 
F_LSH_EQ 
F_LVALUE_LIST 
F_MOD_EQ 
F_MULT_EQ 
F_OR_EQ 
F_RSH_EQ 
F_SUB_EQ 
F_VAL_LVAL 
F_XOR_EQ 
F_NOP 
F_RANGE_FROM_BEG 
F_RANGE_FROM_END 
F_RANGE_OPEN 
F_ALIGN 
F_POINTER 
F_LABEL 
F_NORMAL_STMT_LABEL 
F_CUSTOM_STMT_LABEL 
F_DATA 
F_START_FUNCTION 
F_BYTE 
F_NOTREACHED 
F_AUTO_MAP_MARKER 
F_AUTO_MAP 
F_VOLATILE_RETURN 
F_MAX_INSTR 
F_FILENAME 
F_LINE 


Function Documentation

void exit_opcodes void   ) 
 

const char* get_f_name int  n  ) 
 

const char* get_token_name int  n  ) 
 

void init_opcodes void   ) 
 

const char* low_get_f_name int  n,
struct program p
 


Variable Documentation

struct instr instrs[]
 


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