Main Page | Modules | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages

src/interpret.c File Reference


Detailed Description

Bytecode interpreter.

Definition in file interpret.c.

#include "crogue.h"

Go to the source code of this file.

Data Structures

union  instruction_args

Defines

#define INLINE   inline
#define OP_NOP   0x00
#define OP_HALT   0x01
#define OP_DISC   0x02
#define OP_DISCN   0x03
#define OP_DUP   0x04
#define OP_ALLOCA   0x05
#define OP_RET   0x10
#define OP_CALL   0x11
#define OP_STA   0x12
#define OP_MVA   0x13
#define OP_LINK   0x14
#define OP_CCALL   0x15
#define OP_LDR   0x20
#define OP_LDR2   0x21
#define OP_STR   0x22
#define OP_MOV   0x23
#define OP_LDIB   0x24
#define OP_LDIW   0x25
#define OP_LDIL   0x26
#define OP_LDIZ   0x27
#define OP_LDIO   0x28
#define OP_ADD   0x30
#define OP_SUB   0x31
#define OP_MUL   0x32
#define OP_DIV   0x33
#define OP_MOD   0x34
#define OP_ASL   0x35
#define OP_ASR   0x36
#define OP_AND   0x37
#define OP_OR   0x38
#define OP_XOR   0x39
#define OP_NEG   0x3A
#define OP_INCR   0x3B
#define OP_DECR   0x3C
#define OP_BOOL   0x40
#define OP_BOOL2   0x41
#define OP_NOT   0x42
#define OP_TEQ   0x43
#define OP_TLT   0x44
#define OP_TGT   0x45
#define OP_JMPB   0x50
#define OP_JMPW   0x51
#define OP_JMPL   0x52
#define OP_BRAB   0x53
#define OP_BRAW   0x54
#define OP_BRAL   0x55
#define OP_DEREFB   0x60
#define OP_DEREFW   0x61
#define OP_DEREFL   0x62
#define OP_POKEB   0x63
#define OP_POKEW   0x64
#define OP_POKEL   0x65
#define OP_LDLBL   0x66
#define pop_stack()   (*(--stack_pos))
#define push_stack(n)   (*(stack_pos++) = (n))
#define write_arg(v)   (*(arg_pos++) = (v))
#define load_register(n)   (register_pos[n])
#define save_register(n, v)   (register_pos[n] = (v))
#define start_args()   (arg_pos = register_pos + register_used + 1)

Typedefs

typedef instruction_args instruction_args_t

Functions

const char * interp_func_name (const char *pos)
long run_program (const unsigned char *program_data, int num_params, va_list params)

Variables

const char * interpreter_call_stack [32]
int interpreter_call_stack_pos = 0


Define Documentation

#define INLINE   inline
 

Definition at line 34 of file interpret.c.

#define load_register  )     (register_pos[n])
 

Definition at line 122 of file interpret.c.

Referenced by run_program().

#define OP_ADD   0x30
 

Definition at line 66 of file interpret.c.

Referenced by run_program().

#define OP_ALLOCA   0x05
 

Definition at line 44 of file interpret.c.

Referenced by run_program().

#define OP_AND   0x37
 

Definition at line 73 of file interpret.c.

Referenced by run_program().

#define OP_ASL   0x35
 

Definition at line 71 of file interpret.c.

Referenced by run_program().

#define OP_ASR   0x36
 

Definition at line 72 of file interpret.c.

Referenced by run_program().

#define OP_BOOL   0x40
 

Definition at line 81 of file interpret.c.

Referenced by run_program().

#define OP_BOOL2   0x41
 

Definition at line 82 of file interpret.c.

Referenced by run_program().

#define OP_BRAB   0x53
 

Definition at line 92 of file interpret.c.

Referenced by run_program().

#define OP_BRAL   0x55
 

Definition at line 94 of file interpret.c.

Referenced by run_program().

#define OP_BRAW   0x54
 

Definition at line 93 of file interpret.c.

Referenced by run_program().

#define OP_CALL   0x11
 

Definition at line 48 of file interpret.c.

Referenced by run_program().

#define OP_CCALL   0x15
 

Definition at line 52 of file interpret.c.

Referenced by run_program().

#define OP_DECR   0x3C
 

Definition at line 78 of file interpret.c.

Referenced by run_program().

#define OP_DEREFB   0x60
 

Definition at line 97 of file interpret.c.

Referenced by run_program().

#define OP_DEREFL   0x62
 

Definition at line 99 of file interpret.c.

Referenced by run_program().

#define OP_DEREFW   0x61
 

Definition at line 98 of file interpret.c.

Referenced by run_program().

#define OP_DISC   0x02
 

Definition at line 41 of file interpret.c.

Referenced by run_program().

#define OP_DISCN   0x03
 

Definition at line 42 of file interpret.c.

Referenced by run_program().

#define OP_DIV   0x33
 

Definition at line 69 of file interpret.c.

Referenced by run_program().

#define OP_DUP   0x04
 

Definition at line 43 of file interpret.c.

Referenced by run_program().

#define OP_HALT   0x01
 

Definition at line 40 of file interpret.c.

Referenced by run_program().

#define OP_INCR   0x3B
 

Definition at line 77 of file interpret.c.

Referenced by run_program().

#define OP_JMPB   0x50
 

Definition at line 89 of file interpret.c.

Referenced by run_program().

#define OP_JMPL   0x52
 

Definition at line 91 of file interpret.c.

Referenced by run_program().

#define OP_JMPW   0x51
 

Definition at line 90 of file interpret.c.

Referenced by run_program().

#define OP_LDIB   0x24
 

Definition at line 59 of file interpret.c.

Referenced by run_program().

#define OP_LDIL   0x26
 

Definition at line 61 of file interpret.c.

Referenced by run_program().

#define OP_LDIO   0x28
 

Definition at line 63 of file interpret.c.

Referenced by run_program().

#define OP_LDIW   0x25
 

Definition at line 60 of file interpret.c.

Referenced by run_program().

#define OP_LDIZ   0x27
 

Definition at line 62 of file interpret.c.

Referenced by run_program().

#define OP_LDLBL   0x66
 

Definition at line 103 of file interpret.c.

Referenced by run_program().

#define OP_LDR   0x20
 

Definition at line 55 of file interpret.c.

Referenced by run_program().

#define OP_LDR2   0x21
 

Definition at line 56 of file interpret.c.

Referenced by run_program().

#define OP_LINK   0x14
 

Definition at line 51 of file interpret.c.

Referenced by run_program().

#define OP_MOD   0x34
 

Definition at line 70 of file interpret.c.

Referenced by run_program().

#define OP_MOV   0x23
 

Definition at line 58 of file interpret.c.

Referenced by run_program().

#define OP_MUL   0x32
 

Definition at line 68 of file interpret.c.

Referenced by run_program().

#define OP_MVA   0x13
 

Definition at line 50 of file interpret.c.

Referenced by run_program().

#define OP_NEG   0x3A
 

Definition at line 76 of file interpret.c.

Referenced by run_program().

#define OP_NOP   0x00
 

Definition at line 39 of file interpret.c.

Referenced by run_program().

#define OP_NOT   0x42
 

Definition at line 83 of file interpret.c.

Referenced by run_program().

#define OP_OR   0x38
 

Definition at line 74 of file interpret.c.

Referenced by run_program().

#define OP_POKEB   0x63
 

Definition at line 100 of file interpret.c.

Referenced by run_program().

#define OP_POKEL   0x65
 

Definition at line 102 of file interpret.c.

Referenced by run_program().

#define OP_POKEW   0x64
 

Definition at line 101 of file interpret.c.

Referenced by run_program().

#define OP_RET   0x10
 

Definition at line 47 of file interpret.c.

Referenced by run_program().

#define OP_STA   0x12
 

Definition at line 49 of file interpret.c.

Referenced by run_program().

#define OP_STR   0x22
 

Definition at line 57 of file interpret.c.

Referenced by run_program().

#define OP_SUB   0x31
 

Definition at line 67 of file interpret.c.

Referenced by run_program().

#define OP_TEQ   0x43
 

Definition at line 84 of file interpret.c.

Referenced by run_program().

#define OP_TGT   0x45
 

Definition at line 86 of file interpret.c.

Referenced by run_program().

#define OP_TLT   0x44
 

Definition at line 85 of file interpret.c.

Referenced by run_program().

#define OP_XOR   0x39
 

Definition at line 75 of file interpret.c.

Referenced by run_program().

 
#define pop_stack  )     (*(--stack_pos))
 

Definition at line 119 of file interpret.c.

Referenced by run_program().

#define push_stack  )     (*(stack_pos++) = (n))
 

Definition at line 120 of file interpret.c.

Referenced by run_program().

#define save_register n,
 )     (register_pos[n] = (v))
 

Definition at line 123 of file interpret.c.

Referenced by run_program().

 
#define start_args  )     (arg_pos = register_pos + register_used + 1)
 

Definition at line 124 of file interpret.c.

Referenced by run_program().

#define write_arg  )     (*(arg_pos++) = (v))
 

Definition at line 121 of file interpret.c.

Referenced by run_program().


Typedef Documentation

typedef union instruction_args instruction_args_t
 

Referenced by run_program().


Function Documentation

const char* interp_func_name const char *  pos  )  [static]
 

Definition at line 127 of file interpret.c.

Referenced by run_program().

long run_program const unsigned char *  program_data,
int  num_params,
va_list  params
 

Definition at line 142 of file interpret.c.

References ACTIVE_STACK_DEPTH, instruction_args::bytes, CALL_STACK_DEPTH, instruction_args::dword, instruction_args_t, interp_func_name(), interpret_call(), interpreter_call_stack, interpreter_call_stack_pos, load_register, OP_ADD, OP_ALLOCA, OP_AND, OP_ASL, OP_ASR, OP_BOOL, OP_BOOL2, OP_BRAB, OP_BRAL, OP_BRAW, OP_CALL, OP_CCALL, OP_DECR, OP_DEREFB, OP_DEREFL, OP_DEREFW, OP_DISC, OP_DISCN, OP_DIV, OP_DUP, OP_HALT, OP_INCR, OP_JMPB, OP_JMPL, OP_JMPW, OP_LDIB, OP_LDIL, OP_LDIO, OP_LDIW, OP_LDIZ, OP_LDLBL, OP_LDR, OP_LDR2, OP_LINK, OP_MOD, OP_MOV, OP_MUL, OP_MVA, OP_NEG, OP_NOP, OP_NOT, OP_OR, OP_POKEB, OP_POKEL, OP_POKEW, OP_RET, OP_STA, OP_STR, OP_SUB, OP_TEQ, OP_TGT, OP_TLT, OP_XOR, pop_stack, push_stack, REGISTER_STACK_DEPTH, return_info_t, return_info::returns, return_info::retval, save_register, start_args, instruction_args::ubytes, instruction_args::words, and write_arg.

Referenced by call_attackfunc(), call_genericfunc(), call_stepfunc(), call_throwhitfunc(), and call_usefunc().


Variable Documentation

const char* interpreter_call_stack[32] [static]
 

Definition at line 116 of file interpret.c.

Referenced by run_program().

int interpreter_call_stack_pos = 0 [static]
 

Definition at line 117 of file interpret.c.

Referenced by run_program().


Generated on Thu May 20 13:12:13 2004 for CalcRogue by doxygen 1.3.6