Byte Code
Below is a description of all opcodes we current support in the Eiffel interpreter. They are sorted
Contents
- 1 BC_START
 - 2 BC_PRECOND
 - 3 BC_POSTCOND
 - 4 BC_DEFERRED
 - 5 BC_REVERSE
 - 6 BC_CHECK
 - 7 BC_ASSERT
 - 8 BC_NULL
 - 9 BC_PRE
 - 10 BC_PST
 - 11 BC_CHK
 - 12 BC_LINV
 - 13 BC_LVAR
 - 14 BC_INV
 - 15 BC_END_ASSERT
 - 16 BC_TAG
 - 17 BC_NOTAG
 - 18 BC_JMP_F
 - 19 BC_JMP
 - 20 BC_LOOP
 - 21 BC_END_VARIANT
 - 22 BC_INIT_VARIANT
 - 23 BC_DEBUG
 - 24 BC_RASSIGN
 - 25 BC_LASSIGN
 - 26 BC_ASSIGN
 - 27 BC_CREATE
 - 28 BC_CTYPE
 - 29 BC_CARG
 - 30 BC_CLIKE
 - 31 BC_CCUR
 - 32 BC_INSPECT
 - 33 BC_RANGE
 - 34 BC_INSPECT_EXCEP
 - 35 BC_LREVERSE
 - 36 BC_RREVERSE
 - 37 BC_FEATURE
 - 38 BC_METAMORPHOSE
 - 39 BC_CURRENT
 - 40 BC_ROTATE
 - 41 BC_FEATURE_INV
 - 42 BC_ATTRIBUTE
 - 43 BC_ATTRIBUTE_INV
 - 44 BC_EXTERN
 - 45 BC_EXTERN_INV
 - 46 BC_CHAR
 - 47 BC_BOOL
 - 48 BC_INT32
 - 49 BC_INT32
 - 50 BC_DOUBLE
 - 51 BC_RESULT
 - 52 BC_LOCAL
 - 53 BC_ARG
 - 54 BC_UPLUS
 - 55 BC_UMINUS
 - 56 BC_NOT
 - 57 BC_LT
 - 58 BC_GT
 - 59 BC_MINUS
 - 60 BC_XOR
 - 61 BC_GE
 - 62 BC_EQ
 - 63 BC_NE
 - 64 BC_STAR
 - 65 BC_POWER
 - 66 BC_LE
 - 67 BC_DIV
 - 68 BC_NHOOK
 - 69 BC_AND
 - 70 BC_SLASH
 - 71 BC_MOD
 - 72 BC_PLUS
 - 73 BC_OR
 - 74 BC_ADDR
 - 75 BC_STRING
 - 76 BC_AND_THEN
 - 77 BC_OR_ELSE
 - 78 BC_SPCREATE
 - 79 BC_TUPLE_ACCESS
 - 80 BC_JMP_T
 - 81 BC_TUPLE_ASSIGN
 - 82 BC_RESCUE
 - 83 BC_END_RESCUE
 - 84 BC_RETRY
 - 85 BC_EXP_ASSIGN
 - 86 BC_CLONE
 - 87 BC_EXP_EXCEP
 - 88 BC_VOID
 - 89 BC_NONE_ASSIGN
 - 90 BC_LEXP_ASSIGN
 - 91 BC_REXP_ASSIGN
 - 92 BC_CLONE_ARG
 - 93 BC_NO_CLONE_ARG
 - 94 BC_FALSE_COMPAR
 - 95 BC_TRUE_COMPAR
 - 96 BC_STANDARD_EQUAL
 - 97 BC_BIT_STD_EQUAL
 - 98 BC_HOOK
 - 99 BC_BIT
 - 100 BC_ARRAY
 - 101 BC_RETRIEVE_OLD
 - 102 BC_FLOAT
 - 103 BC_OLD
 - 104 BC_ADD_STRIP
 - 105 BC_END_STRIP
 - 106 BC_LBIT_ASSIGN
 - 107 BC_RAISE_PREC
 - 108 BC_GOTO_BODY
 - 109 BC_NOT_REC
 - 110 BC_END_PRE
 - 111 BC_CAST_NATURAL
 - 112 BC_CAST_INTEGER
 - 113 BC_CAST_REAL_32
 - 114 BC_CAST_REAL_64
 - 115 BC_INV_NULL
 - 116 BC_CREAT_INV
 - 117 BC_END_EVAL_OLD
 - 118 BC_START_EVAL_OLD
 - 119 BC_OBJECT_ADDR
 - 120 BC_PFEATURE
 - 121 BC_PFEATURE_INV
 - 122 BC_PEXTERN
 - 123 BC_PEXTERN_INV
 - 124 BC_PARRAY
 - 125 BC_PATTRIBUTE
 - 126 BC_PATTRIBUTE_INV
 - 127 BC_PEXP_ASSIGN
 - 128 BC_PASSIGN
 - 129 BC_PREVERSE
 - 130 BC_PCLIKE
 - 131 BC_OBJECT_EXPR_ADDR
 - 132 BC_RESERVE
 - 133 BC_POP
 - 134 BC_REF_TO_PTR
 - 135 BC_RCREATE
 - 136 BC_GEN_PARAM_CREATE
 - 137 BC_CAST_CHAR32
 - 138 BC_NULL_POINTER
 - 139 BC_BASIC_OPERATIONS
 - 140 BC_MAX
 - 141 BC_MIN
 - 142 BC_GENERATOR
 - 143 BC_OFFSET
 - 144 BC_ZERO
 - 145 BC_ONE
 - 146 BC_THREE_WAY_COMPARISON
 - 147 BC_INT_BIT_OP
 - 148 BC_INT_BIT_AND
 - 149 BC_INT_BIT_OR
 - 150 BC_INT_BIT_XOR
 - 151 BC_INT_BIT_NOT
 - 152 BC_INT_BIT_SHIFT_LEFT
 - 153 BC_INT_BIT_SHIFT_RIGHT
 - 154 BC_INT_BIT_TEST
 - 155 BC_INT_SET_BIT
 - 156 BC_INT_SET_BIT_WITH_MASK
 - 157 BC_WCHAR
 - 158 BC_INT8
 - 159 BC_INT16
 - 160 BC_INT64
 - 161 BC_CAST_CHAR8
 - 162 BC_ONCE_STRING
 - 163 BC_ALLOCATE_ONCE_STRINGS
 - 164 BC_CCLONE
 - 165 BC_UINT8
 - 166 BC_UINT16
 - 167 BC_UINT32
 - 168 BC_UINT64
 - 169 BC_NOTUSED_154
 - 170 BC_NOTUSED_155
 - 171 BC_NOTUSED_156
 - 172 BC_NOTUSED_157
 - 173 BC_NOTUSED_158
 - 174 BC_NOTUSED_159
 - 175 BC_NOTUSED_160
 - 176 BC_NOTUSED_161
 - 177 BC_NOTUSED_162
 - 178 BC_NOTUSED_163
 - 179 BC_NOTUSED_164
 - 180 BC_NOTUSED_165
 - 181 BC_NOTUSED_166
 - 182 BC_NOTUSED_167
 - 183 BC_TUPLE
 - 184 BC_PTUPLE
 - 185 BC_JAVA_RTYPE
 - 186 BC_JAVA_EXTERNAL
 
BC_START
Description
Entry point of a routine.
arguments
- routine_id: 32 bits
 - body_id: 32 bits
 - result type: 32 bits
 - number of arguments: 16 bits
 - number of locals: 16 bits
 - type of each local
 - flag for argument cloning: 8 bits (If it is set (aka different of BC_NO_CLONE_ARG), read the type of arguments which need cloning).
 - routine name: null terminated CHARACTER_8 string
 - dynamic type where feature is written in: 16 bits
 - flag for rescue clause presence: 8 bits (If present, offset to the rescue clause: 32 bits).
 
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_INT32
Description
Load a INTEGER_32 on the stack.
Stack transition
... -> INTEGER_32 value
Arguments
- INTEGER_32 value: 32 bits
 
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
Description
Load a INTEGER_8 on the stack.
Stack transition
... -> INTEGER_8 value
Arguments
- INTEGER_8 value: 8 bits
 
BC_INT16
Description
Load a INTEGER_16 on the stack.
Stack transition
... -> INTEGER_16 value
Arguments
- INTEGER_16 value: 16 bits
 
BC_INT64
BC_CAST_CHAR8
BC_ONCE_STRING
BC_ALLOCATE_ONCE_STRINGS
BC_CCLONE
BC_UINT8
Description
Load a NATURAL_8 on the stack.
Stack transition
... -> NATURAL_8 value
Arguments
- NATURAL_8 value: 8 bits
 
BC_UINT16
Description
Load a NATURAL_16 on the stack.
Stack transition
... -> NATURAL_16 value
Arguments
- NATURAL_16 value: 16 bits
 
BC_UINT32
Description
Load a NATURAL_32 on the stack.
Stack transition
... -> NATURAL_32 value
Arguments
- NATURAL_32 value: 32 bits
 
BC_UINT64
Description
Load a NATURAL_64 on the stack.
Stack transition
... -> NATURAL_64 value
Arguments
- NATURAL_64 value: 64 bits
 

