|
|
| Line 3: |
Line 3: |
|
| |
|
| ==BC_START== | | ==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_PRECOND== |
| ==BC_POSTCOND== | | ==BC_POSTCOND== |
Revision as of 15:42, 7 July 2006
Below is a description of all opcodes we current support in the Eiffel interpreter. They are sorted
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_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