Byte Code

Revision as of 07:51, 7 July 2006 by Manus (Talk | contribs) (BC_INT8)

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

Contents

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

Description

Load a INTEGER_8 on the stack.

Stack transition

... -> INTEGER_8 value

Arguments

  • INTEGER_8 value: 8 bits

BC_INT16

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

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