Logo Search packages:      
Sourcecode: helium version File versions  Download package

instr.h

/*-----------------------------------------------------------------------
  The Lazy Virtual Machine.

  Daan Leijen.

  Copyright 2001, Daan Leijen. All rights reserved. This file is
  distributed under the terms of the GNU Library General Public License.
-----------------------------------------------------------------------*/

/* $Id: instr.h 214 2004-01-10 08:09:57Z uust $ */

#ifndef _instr_
#define _instr_

#define INSTRLIST       \
  Ins( ARGCHK, 1 ),     \
  Ins( PUSHCODE, 1 ),   \
  Ins( PUSHCONT, 1 ),   \
  Ins( PUSHVAR, 1 ),    \
  Ins( PUSHINT, 1 ),    \
  Ins( PUSHFLOAT, 2 ), \
  Ins( PUSHBYTES, 1 ),  \
  Ins( SLIDE, 2 ),      \
  Ins( STUB, 1 ),       \
  \
  Ins( ALLOCAP, 1 ),    \
  Ins( PACKAP, 2 ),     \
  Ins( PACKNAP, 2 ),    \
  Ins( NEWAP, 1),       \
  Ins( NEWNAP, 1 ),     \
  \
  Ins( ENTER, 0 ),      \
  Ins( RETURN, 0 ),     \
  Ins( CATCH, 0 ),      \
  Ins( RAISE, 0 ),      \
  Ins( CALL, 2 ),       \
  \
  Ins( ALLOCCON, 2 ),   \
  Ins( PACKCON, 2 ),    \
  Ins( NEWCON, 2),      \
  Ins( UNPACKCON, 1),   \
  Ins( TESTCON, 2 ),    \
  \
  Ins( TESTINT, 2),     \
  Ins( ADDINT, 0),      \
  Ins( SUBINT, 0 ),     \
  Ins( MULINT, 0 ),     \
  Ins( DIVINT, 0 ),     \
  Ins( MODINT, 0 ),     \
  Ins( QUOTINT, 0 ),    \
  Ins( REMINT, 0 ),     \
  \
  Ins( ANDINT, 0 ),     \
  Ins( XORINT, 0 ),     \
  Ins( ORINT, 0 ),      \
  Ins( SHRINT, 0 ),     \
  Ins( SHLINT, 0 ),     \
  Ins( SHRNAT, 0 ),     \
  \
  Ins( NEGINT, 0 ),     \
  \
  Ins( EQINT, 0 ),      \
  Ins( NEINT, 0 ),      \
  Ins( LTINT, 0 ),      \
  Ins( GTINT, 0 ),      \
  Ins( LEINT, 0 ),      \
  Ins( GEINT, 0 ),      \
  \
  Ins( ALLOC, 0 ),      \
  Ins( NEW, 1 ),        \
  Ins( GETFIELD, 0 ),   \
  Ins( SETFIELD, 0 ),   \
  Ins( GETTAG, 0 ),     \
  Ins( GETSIZE, 0 ),    \
  Ins( PACK, 2 ),       \
  Ins( UNPACK, 1 ),     \
  \
  Ins( PUSHVAR0, 0 ),   \
  Ins( PUSHVAR1, 0 ),   \
  Ins( PUSHVAR2, 0 ),   \
  Ins( PUSHVAR3, 0 ),   \
  Ins( PUSHVAR4, 0 ),   \
  \
  Ins( PUSHVARS2, 2 ),  \
  Ins( PUSHVARS3, 3 ),  \
  Ins( PUSHVARS4, 4 ),  \
  \
  Ins( NEWAP1, 0 ),     \
  Ins( NEWAP2, 0 ),     \
  Ins( NEWAP3, 0 ),     \
  Ins( NEWAP4, 0 ),     \
  \
  Ins( NEWNAP1, 0 ),    \
  Ins( NEWNAP2, 0 ),    \
  Ins( NEWNAP3, 0 ),    \
  Ins( NEWNAP4, 0 ),    \
  \
  Ins( NEWCON0, 1 ),    \
  Ins( NEWCON1, 1 ),    \
  Ins( NEWCON2, 1 ),    \
  Ins( NEWCON3, 1 ),    \
  \
  Ins( ENTERCODE, 1 ),  \
  Ins( EVALVAR, 1 ),    \
  Ins( RETURNCON, 2 ),  \
  Ins( RETURNINT, 1 ),  \
  Ins( RETURNCON0, 1 ), \
  \
  Ins( MATCHCON, 2 ),   \
  Ins( SWITCHCON, 2 ),  \
  Ins( MATCHINT, 2 ),   \
  Ins( MATCHFLOAT, 2 ), \
  Ins( MATCH, 2 ),      \
  \
  Ins( RETURNFLOAT, 2 ), \
  Ins( ADDFLOAT, 0 ),  \
  Ins( SUBFLOAT, 0 ),  \
  Ins( MULFLOAT, 0 ),  \
  Ins( DIVFLOAT, 0 ),  \
  Ins( NEGFLOAT, 0 ),  \
  \
  Ins( EQFLOAT, 0 ), \
  Ins( NEFLOAT, 0 ), \
  Ins( LTFLOAT, 0 ), \
  Ins( GTFLOAT, 0 ), \
  Ins( LEFLOAT, 0 ), \
  Ins( GEFLOAT, 0 ), \
  \
  /* Additional experimental instructions (AD, 20040108) */ \
  Ins( UPDFIELD, 0 ),   \
  \
  /* internal instructions */ \
  Ins( PUSHCAF, 1 ),    \
  Ins( STOP, 0 )

#define Ins(i,n)  i
enum instruction { INSTRLIST };
#undef Ins

extern int instr_arg_count( enum instruction instr );
extern char* instr_name( enum instruction instr );

#endif /* _instr_ */

Generated by  Doxygen 1.6.0   Back to index