Difference between revisions of "Byte Code"

(List of byte codes)
 
Line 16: Line 16:
 
==BC_LVAR==
 
==BC_LVAR==
 
==BC_INV==
 
==BC_INV==
==BC_END==
+
==BC_END_ASSERT==
 
==BC_TAG==
 
==BC_TAG==
 
==BC_NOTAG==
 
==BC_NOTAG==
==BC_JMP==
+
==BC_JMP_F==
 
==BC_JMP==
 
==BC_JMP==
 
==BC_LOOP==
 
==BC_LOOP==
==BC_END==
+
==BC_END_VARIANT==
==BC_INIT==
+
==BC_INIT_VARIANT==
 
==BC_DEBUG==
 
==BC_DEBUG==
 
==BC_RASSIGN==
 
==BC_RASSIGN==
Line 35: Line 35:
 
==BC_INSPECT==
 
==BC_INSPECT==
 
==BC_RANGE==
 
==BC_RANGE==
==BC_INSPECT==
+
==BC_INSPECT_EXCEP==
 
==BC_LREVERSE==
 
==BC_LREVERSE==
 
==BC_RREVERSE==
 
==BC_RREVERSE==
Line 42: Line 42:
 
==BC_CURRENT==
 
==BC_CURRENT==
 
==BC_ROTATE==
 
==BC_ROTATE==
==BC_FEATURE==
+
==BC_FEATURE_INV==
 
==BC_ATTRIBUTE==
 
==BC_ATTRIBUTE==
==BC_ATTRIBUTE==
+
==BC_ATTRIBUTE_INV==
==BC_EXTERN==
+
 
==BC_EXTERN==
 
==BC_EXTERN==
 +
==BC_EXTERN_INV==
 
==BC_CHAR==
 
==BC_CHAR==
 
==BC_BOOL==
 
==BC_BOOL==
 
==BC_INT==
 
==BC_INT==
==BC_INT==
+
==BC_INT32==
 
==BC_DOUBLE==
 
==BC_DOUBLE==
 
==BC_RESULT==
 
==BC_RESULT==
Line 77: Line 77:
 
==BC_ADDR==
 
==BC_ADDR==
 
==BC_STRING==
 
==BC_STRING==
==BC_AND==
+
==BC_AND_THEN==
==BC_OR==
+
==BC_OR_ELSE==
 
==BC_SPCREATE==
 
==BC_SPCREATE==
==BC_TUPLE==
+
==BC_TUPLE_ACCESS==
==BC_JMP==
+
==BC_JMP_T==
==BC_TUPLE==
+
==BC_TUPLE_ASSIGN==
 
==BC_RESCUE==
 
==BC_RESCUE==
==BC_END==
+
==BC_END_RESCUE==
 
==BC_RETRY==
 
==BC_RETRY==
==BC_EXP==
+
==BC_EXP_ASSIGN==
 
==BC_CLONE==
 
==BC_CLONE==
==BC_EXP==
+
==BC_EXP_EXCEP==
 
==BC_VOID==
 
==BC_VOID==
==BC_NONE==
+
==BC_NONE_ASSIGN==
==BC_LEXP==
+
==BC_LEXP_ASSIGN==
==BC_REXP==
+
==BC_REXP_ASSIGN==
==BC_CLONE==
+
==BC_CLONE_ARG==
==BC_NO==
+
==BC_NO_CLONE_ARG==
==BC_FALSE==
+
==BC_FALSE_COMPAR==
==BC_TRUE==
+
==BC_TRUE_COMPAR==
==BC_STANDARD==
+
==BC_STANDARD_EQUAL==
==BC_BIT==
+
==BC_BIT_STD_EQUAL==
 
==BC_HOOK==
 
==BC_HOOK==
 
==BC_BIT==
 
==BC_BIT==
 
==BC_ARRAY==
 
==BC_ARRAY==
==BC_RETRIEVE==
+
==BC_RETRIEVE_OLD==
 
==BC_FLOAT==
 
==BC_FLOAT==
 
==BC_OLD==
 
==BC_OLD==
==BC_ADD==
+
==BC_ADD_STRIP==
==BC_END==
+
==BC_END_STRIP==
==BC_LBIT==
+
==BC_LBIT_ASSIGN==
==BC_RAISE==
+
==BC_RAISE_PREC==
==BC_GOTO==
+
==BC_GOTO_BODY==
==BC_NOT==
+
==BC_NOT_REC==
==BC_END==
+
==BC_END_PRE==
==BC_CAST==
+
==BC_CAST_NATURAL==
==BC_CAST==
+
==BC_CAST_INTEGER==
==BC_CAST==
+
==BC_CAST_REAL_32==
==BC_CAST==
+
==BC_CAST_REAL_64==
==BC_INV==
+
==BC_INV_NULL==
==BC_CREAT==
+
==BC_CREAT_INV==
==BC_END==
+
==BC_END_EVAL_OLD==
==BC_START==
+
==BC_START_EVAL_OLD==
==BC_OBJECT==
+
==BC_OBJECT_ADDR==
==BC_PFEATURE==
+
 
==BC_PFEATURE==
 
==BC_PFEATURE==
 +
==BC_PFEATURE_INV==
 
==BC_PEXTERN==
 
==BC_PEXTERN==
==BC_PEXTERN==
+
==BC_PEXTERN_INV==
 
==BC_PARRAY==
 
==BC_PARRAY==
 
==BC_PATTRIBUTE==
 
==BC_PATTRIBUTE==
==BC_PATTRIBUTE==
+
==BC_PATTRIBUTE_INV==
==BC_PEXP==
+
==BC_PEXP_ASSIGN==
 
==BC_PASSIGN==
 
==BC_PASSIGN==
 
==BC_PREVERSE==
 
==BC_PREVERSE==
 
==BC_PCLIKE==
 
==BC_PCLIKE==
==BC_OBJECT==
+
==BC_OBJECT_EXPR_ADDR==
 
==BC_RESERVE==
 
==BC_RESERVE==
 
==BC_POP==
 
==BC_POP==
  
==BC_REF==
+
==BC_REF_TO_PTR==
 
==BC_RCREATE==
 
==BC_RCREATE==
  
/* Byte code for the creation of a generic parameter */
+
==BC_GEN_PARAM_CREATE==
==BC_GEN==
+
  
/* Byte code for expression creation */
+
==BC_CAST_CHAR32==
==BC_CAST==
+
==BC_NULL_POINTER==
==BC_NULL==
+
==BC_BASIC_OPERATIONS==
==BC_BASIC==
+
 
==BC_MAX==
 
==BC_MAX==
 
==BC_MIN==
 
==BC_MIN==
Line 152: Line 150:
 
==BC_ZERO==
 
==BC_ZERO==
 
==BC_ONE==
 
==BC_ONE==
==BC_THREE==
+
==BC_THREE_WAY_COMPARISON==
==BC_INT==
+
==BC_INT_BIT_OP==
==BC_INT==
+
==BC_INT_BIT_AND==
==BC_INT==
+
==BC_INT_BIT_OR==
==BC_INT==
+
==BC_INT_BIT_XOR==
==BC_INT==
+
==BC_INT_BIT_NOT==
==BC_INT==
+
==BC_INT_BIT_SHIFT_LEFT==
==BC_INT==
+
==BC_INT_BIT_SHIFT_RIGHT==
==BC_INT==
+
==BC_INT_BIT_TEST==
==BC_INT==
+
==BC_INT_SET_BIT==
==BC_INT==
+
==BC_INT_SET_BIT_WITH_MASK==
  
/* New basic types */
 
 
==BC_WCHAR==
 
==BC_WCHAR==
==BC_INT==
+
==BC_INT8==
==BC_INT==
+
==BC_INT16==
==BC_INT==
+
==BC_INT64==
  
/* Conversion */
+
==BC_CAST_CHAR8==
==BC_CAST==
+
  
/* Once manifest strings */
+
==BC_ONCE_STRING==
==BC_ONCE==
+
==BC_ALLOCATE_ONCE_STRINGS==
==BC_ALLOCATE==
+
  
/* Cloning */
 
 
==BC_CCLONE==
 
==BC_CCLONE==
  
==BC_UINT==
+
==BC_UINT8==
==BC_UINT==
+
==BC_UINT16==
==BC_UINT==
+
==BC_UINT32==
==BC_UINT==
+
==BC_UINT64==
==BC_NOTUSED==
+
==BC_NOTUSED_154==
==BC_NOTUSED==
+
==BC_NOTUSED_155==
==BC_NOTUSED==
+
==BC_NOTUSED_156==
==BC_NOTUSED==
+
==BC_NOTUSED_157==
==BC_NOTUSED==
+
==BC_NOTUSED_158==
==BC_NOTUSED==
+
==BC_NOTUSED_159==
==BC_NOTUSED==
+
==BC_NOTUSED_160==
==BC_NOTUSED==
+
==BC_NOTUSED_161==
==BC_NOTUSED==
+
==BC_NOTUSED_162==
==BC_NOTUSED==
+
==BC_NOTUSED_163==
==BC_NOTUSED==
+
==BC_NOTUSED_164==
==BC_NOTUSED==
+
==BC_NOTUSED_165==
==BC_NOTUSED==
+
==BC_NOTUSED_166==
==BC_NOTUSED==
+
==BC_NOTUSED_167==
  
/* Manifest tuple */
 
 
==BC_TUPLE==
 
==BC_TUPLE==
 
==BC_PTUPLE==
 
==BC_PTUPLE==
  
==BC_JAVA==
+
==BC_JAVA_RTYPE==
==BC_JAVA==
+
==BC_JAVA_EXTERNAL==
 
+
MAX_CODE                201    /* Maximum legal byte code */
+

Revision as of 07:27, 7 July 2006

Below is a description of all opcodes we current support in the Eiffel interpreter. They are sorted

Contents

BC_START

BC_PRECOND

BC_POSTCOND

BC_DEFERRED

BC_REVERSE

BC_CHECK

BC_ASSERT

BC_NULL

BC_PRE

BC_PST

BC_CHK

BC_LINV

BC_LVAR

BC_INV

BC_END_ASSERT

BC_TAG

BC_NOTAG

BC_JMP_F

BC_JMP

BC_LOOP

BC_END_VARIANT

BC_INIT_VARIANT

BC_DEBUG

BC_RASSIGN

BC_LASSIGN

BC_ASSIGN

BC_CREATE

BC_CTYPE

BC_CARG

BC_CLIKE

BC_CCUR

BC_INSPECT

BC_RANGE

BC_INSPECT_EXCEP

BC_LREVERSE

BC_RREVERSE

BC_FEATURE

BC_METAMORPHOSE

BC_CURRENT

BC_ROTATE

BC_FEATURE_INV

BC_ATTRIBUTE

BC_ATTRIBUTE_INV

BC_EXTERN

BC_EXTERN_INV

BC_CHAR

BC_BOOL

BC_INT

BC_INT32

BC_DOUBLE

BC_RESULT

BC_LOCAL

BC_ARG

BC_UPLUS

BC_UMINUS

BC_NOT

BC_LT

BC_GT

BC_MINUS

BC_XOR

BC_GE

BC_EQ

BC_NE

BC_STAR

BC_POWER

BC_LE

BC_DIV

BC_NHOOK

BC_AND

BC_SLASH

BC_MOD

BC_PLUS

BC_OR

BC_ADDR

BC_STRING

BC_AND_THEN

BC_OR_ELSE

BC_SPCREATE

BC_TUPLE_ACCESS

BC_JMP_T

BC_TUPLE_ASSIGN

BC_RESCUE

BC_END_RESCUE

BC_RETRY

BC_EXP_ASSIGN

BC_CLONE

BC_EXP_EXCEP

BC_VOID

BC_NONE_ASSIGN

BC_LEXP_ASSIGN

BC_REXP_ASSIGN

BC_CLONE_ARG

BC_NO_CLONE_ARG

BC_FALSE_COMPAR

BC_TRUE_COMPAR

BC_STANDARD_EQUAL

BC_BIT_STD_EQUAL

BC_HOOK

BC_BIT

BC_ARRAY

BC_RETRIEVE_OLD

BC_FLOAT

BC_OLD

BC_ADD_STRIP

BC_END_STRIP

BC_LBIT_ASSIGN

BC_RAISE_PREC

BC_GOTO_BODY

BC_NOT_REC

BC_END_PRE

BC_CAST_NATURAL

BC_CAST_INTEGER

BC_CAST_REAL_32

BC_CAST_REAL_64

BC_INV_NULL

BC_CREAT_INV

BC_END_EVAL_OLD

BC_START_EVAL_OLD

BC_OBJECT_ADDR

BC_PFEATURE

BC_PFEATURE_INV

BC_PEXTERN

BC_PEXTERN_INV

BC_PARRAY

BC_PATTRIBUTE

BC_PATTRIBUTE_INV

BC_PEXP_ASSIGN

BC_PASSIGN

BC_PREVERSE

BC_PCLIKE

BC_OBJECT_EXPR_ADDR

BC_RESERVE

BC_POP

BC_REF_TO_PTR

BC_RCREATE

BC_GEN_PARAM_CREATE

BC_CAST_CHAR32

BC_NULL_POINTER

BC_BASIC_OPERATIONS

BC_MAX

BC_MIN

BC_GENERATOR

BC_OFFSET

BC_ZERO

BC_ONE

BC_THREE_WAY_COMPARISON

BC_INT_BIT_OP

BC_INT_BIT_AND

BC_INT_BIT_OR

BC_INT_BIT_XOR

BC_INT_BIT_NOT

BC_INT_BIT_SHIFT_LEFT

BC_INT_BIT_SHIFT_RIGHT

BC_INT_BIT_TEST

BC_INT_SET_BIT

BC_INT_SET_BIT_WITH_MASK

BC_WCHAR

BC_INT8

BC_INT16

BC_INT64

BC_CAST_CHAR8

BC_ONCE_STRING

BC_ALLOCATE_ONCE_STRINGS

BC_CCLONE

BC_UINT8

BC_UINT16

BC_UINT32

BC_UINT64

BC_NOTUSED_154

BC_NOTUSED_155

BC_NOTUSED_156

BC_NOTUSED_157

BC_NOTUSED_158

BC_NOTUSED_159

BC_NOTUSED_160

BC_NOTUSED_161

BC_NOTUSED_162

BC_NOTUSED_163

BC_NOTUSED_164

BC_NOTUSED_165

BC_NOTUSED_166

BC_NOTUSED_167

BC_TUPLE

BC_PTUPLE

BC_JAVA_RTYPE

BC_JAVA_EXTERNAL