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_INT
- 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