mirror of https://github.com/svaarala/duktape.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
660 lines
10 KiB
660 lines
10 KiB
# Duktape opcode metadata for debugger.
|
|
# - See duk_debug.js for the argument formats (A_R etc).
|
|
# - Flag bits are for the whole instruction as a 32-bit integer,
|
|
# they are not field shifted
|
|
#
|
|
# NOTE: Use YAML comments only on comment-only lines (not trailing content):
|
|
# Node.js 'yamljs' seems to refuse parsing trailing comments in some cases.
|
|
|
|
opcodes:
|
|
- name: LDREG
|
|
args:
|
|
- A_R
|
|
- BC_R
|
|
- name: STREG
|
|
args:
|
|
- A_R
|
|
- BC_R
|
|
- name: LDCONST
|
|
args:
|
|
- A_R
|
|
- BC_C
|
|
- name: LDINT
|
|
args:
|
|
- A_R
|
|
- BC_LDINT
|
|
- name: LDINTX
|
|
args:
|
|
- A_R
|
|
- BC_LDINTX
|
|
- name: MPUTOBJ
|
|
args:
|
|
- A_R
|
|
- B_R
|
|
- C_I
|
|
- name: MPUTOBJI
|
|
args:
|
|
- A_R
|
|
- B_RI
|
|
- C_I
|
|
- name: MPUTARR
|
|
args:
|
|
- A_R
|
|
- B_R
|
|
- C_I
|
|
- name: MPUTARRI
|
|
args:
|
|
- A_R
|
|
- B_RI
|
|
- C_I
|
|
- name: NEW
|
|
args:
|
|
- B_R
|
|
- C_I
|
|
- name: NEWI
|
|
args:
|
|
- B_RI
|
|
- C_I
|
|
- name: REGEXP
|
|
args:
|
|
- A_R
|
|
- B_RC
|
|
- C_RC
|
|
- name: CSREG
|
|
args:
|
|
- A_R
|
|
- B_R
|
|
- name: CSREGI
|
|
args:
|
|
- A_RI
|
|
- B_R
|
|
- name: GETVAR
|
|
args:
|
|
- A_R
|
|
- BC_C
|
|
- name: PUTVAR
|
|
args:
|
|
- A_R
|
|
- BC_C
|
|
- name: DECLVAR
|
|
args:
|
|
- A_H
|
|
- B_RC
|
|
- C_RC
|
|
flags:
|
|
- mask: 0x40
|
|
name: writable
|
|
- mask: 0x80
|
|
name: enumerable
|
|
- mask: 0x100
|
|
name: configurable
|
|
- mask: 0x200
|
|
name: accessor
|
|
- mask: 0x400
|
|
name: undef_value
|
|
- mask: 0x800
|
|
name: func_decl
|
|
- name: DELVAR
|
|
args:
|
|
- A_R
|
|
- B_RC
|
|
- name: CSVAR
|
|
args:
|
|
- A_R
|
|
- B_RC
|
|
- name: CSVARI
|
|
args:
|
|
- A_RI
|
|
- B_RC
|
|
- name: CLOSURE
|
|
args:
|
|
- A_R
|
|
- BC_I
|
|
- name: GETPROP
|
|
args:
|
|
- A_R
|
|
- B_RC
|
|
- C_RC
|
|
- name: PUTPROP
|
|
args:
|
|
- A_R
|
|
- B_RC
|
|
- C_RC
|
|
- name: DELPROP
|
|
args:
|
|
- A_R
|
|
- B_R
|
|
- C_RC
|
|
- name: CSPROP
|
|
args:
|
|
- A_R
|
|
- B_R
|
|
- C_RC
|
|
- name: CSPROPI
|
|
args:
|
|
- A_RI
|
|
- B_R
|
|
- C_RC
|
|
- name: ADD
|
|
args:
|
|
- A_R
|
|
- B_RC
|
|
- C_RC
|
|
- name: SUB
|
|
args:
|
|
- A_R
|
|
- B_RC
|
|
- C_RC
|
|
- name: MUL
|
|
args:
|
|
- A_R
|
|
- B_RC
|
|
- C_RC
|
|
- name: DIV
|
|
args:
|
|
- A_R
|
|
- B_RC
|
|
- C_RC
|
|
- name: MOD
|
|
args:
|
|
- A_R
|
|
- B_RC
|
|
- C_RC
|
|
- name: BAND
|
|
args:
|
|
- A_R
|
|
- B_RC
|
|
- C_RC
|
|
- name: BOR
|
|
args:
|
|
- A_R
|
|
- B_RC
|
|
- C_RC
|
|
- name: BXOR
|
|
args:
|
|
- A_R
|
|
- B_RC
|
|
- C_RC
|
|
- name: BASL
|
|
args:
|
|
- A_R
|
|
- B_RC
|
|
- C_RC
|
|
- name: BLSR
|
|
args:
|
|
- A_R
|
|
- B_RC
|
|
- C_RC
|
|
- name: BASR
|
|
args:
|
|
- A_R
|
|
- B_RC
|
|
- C_RC
|
|
- name: EQ
|
|
args:
|
|
- A_R
|
|
- B_RC
|
|
- C_RC
|
|
- name: NEQ
|
|
args:
|
|
- A_R
|
|
- B_RC
|
|
- C_RC
|
|
- name: SEQ
|
|
args:
|
|
- A_R
|
|
- B_RC
|
|
- C_RC
|
|
- name: SNEQ
|
|
args:
|
|
- A_R
|
|
- B_RC
|
|
- C_RC
|
|
- name: GT
|
|
args:
|
|
- A_R
|
|
- B_RC
|
|
- C_RC
|
|
- name: GE
|
|
args:
|
|
- A_R
|
|
- B_RC
|
|
- C_RC
|
|
- name: LT
|
|
args:
|
|
- A_R
|
|
- B_RC
|
|
- C_RC
|
|
- name: LE
|
|
args:
|
|
- A_R
|
|
- B_RC
|
|
- C_RC
|
|
- name: IF
|
|
args:
|
|
- A_B
|
|
- B_RC
|
|
- name: JUMP
|
|
args:
|
|
- ABC_JUMP
|
|
- name: RETURN
|
|
args:
|
|
- A_H
|
|
- B_RC
|
|
flags:
|
|
- mask: 0x40
|
|
name: fast_return
|
|
- mask: 0x80
|
|
name: have_retval
|
|
- name: CALL
|
|
args:
|
|
- A_H
|
|
- B_R
|
|
- C_I
|
|
flags:
|
|
- mask: 0x40
|
|
name: tailcall
|
|
- mask: 0x80
|
|
name: evalcall
|
|
- name: CALLI
|
|
args:
|
|
- A_H
|
|
- B_RI
|
|
- C_I
|
|
- name: TRYCATCH
|
|
args:
|
|
- A_H
|
|
# base register for two consecutive regs (base_reg + 0, base_reg + 1) used for two things:
|
|
# - input: either 'with' target register or catch varname constant (base_reg + 0), depending on flags
|
|
# - output: when caught, catch value (base_reg + 0) and type (base_reg + 1)
|
|
- BC_R
|
|
flags:
|
|
- mask: 0x40
|
|
name: have_catch
|
|
- mask: 0x80
|
|
name: have_finally
|
|
- mask: 0x100
|
|
name: catch_binding
|
|
- mask: 0x200
|
|
name: with_binding
|
|
- name: EXTRA
|
|
extra: true
|
|
- name: PREINCR
|
|
args:
|
|
- A_R
|
|
- BC_R
|
|
- name: PREDECR
|
|
args:
|
|
- A_R
|
|
- BC_R
|
|
- name: POSTINCR
|
|
args:
|
|
- A_R
|
|
- BC_R
|
|
- name: POSTDECR
|
|
args:
|
|
- A_R
|
|
- BC_R
|
|
- name: PREINCV
|
|
args:
|
|
- A_R
|
|
- BC_C
|
|
- name: PREDECV
|
|
args:
|
|
- A_R
|
|
- BC_C
|
|
- name: POSTINCV
|
|
args:
|
|
- A_R
|
|
- BC_C
|
|
- name: POSTDECV
|
|
args:
|
|
- A_R
|
|
- BC_C
|
|
- name: PREINCP
|
|
args:
|
|
- A_R
|
|
- B_RC
|
|
- C_RC
|
|
- name: PREDECP
|
|
args:
|
|
- A_R
|
|
- B_RC
|
|
- C_RC
|
|
- name: POSTINCP
|
|
args:
|
|
- A_R
|
|
- B_RC
|
|
- C_RC
|
|
- name: POSTDECP
|
|
args:
|
|
- A_R
|
|
- B_RC
|
|
- C_RC
|
|
|
|
extra:
|
|
- name: NOP
|
|
- name: INVALID
|
|
args:
|
|
- BC_I
|
|
- name: LDTHIS
|
|
args:
|
|
- BC_R
|
|
- name: LDUNDEF
|
|
args:
|
|
- BC_R
|
|
- name: LDNULL
|
|
args:
|
|
- BC_R
|
|
- name: LDTRUE
|
|
args:
|
|
- BC_R
|
|
- name: LDFALSE
|
|
args:
|
|
- BC_R
|
|
- name: NEWOBJ
|
|
args:
|
|
# XXX: extend to BC?
|
|
- B_R
|
|
- name: NEWARR
|
|
args:
|
|
# XXX: extend to BC?
|
|
- B_R
|
|
- name: SETALEN
|
|
args:
|
|
- B_R
|
|
- C_R
|
|
- name: TYPEOF
|
|
args:
|
|
- BC_R
|
|
- name: TYPEOFID
|
|
args:
|
|
- B_R
|
|
# maybe changed to C_C later
|
|
- C_RC
|
|
- name: INITENUM
|
|
args:
|
|
- B_R
|
|
- C_R
|
|
- name: NEXTENUM
|
|
args:
|
|
- B_R
|
|
- C_R
|
|
- name: INITSET
|
|
args:
|
|
- B_R
|
|
- C_R
|
|
- name: INITSETI
|
|
args:
|
|
- B_R
|
|
- C_RI
|
|
- name: INITGET
|
|
args:
|
|
- B_R
|
|
- C_RI
|
|
- name: INITGETI
|
|
args:
|
|
- B_R
|
|
- C_RI
|
|
- name: ENDTRY
|
|
- name: ENDCATCH
|
|
- name: ENDFIN
|
|
- name: THROW
|
|
args:
|
|
- BC_R
|
|
- name: INVLHS
|
|
- name: UNM
|
|
args:
|
|
- BC_R
|
|
- name: UNP
|
|
args:
|
|
- BC_R
|
|
- name: DEBUGGER
|
|
- name: BREAK
|
|
args:
|
|
- BC_I
|
|
- name: CONTINUE
|
|
args:
|
|
- BC_I
|
|
- name: BNOT
|
|
args:
|
|
- BC_R
|
|
- name: LNOT
|
|
args:
|
|
- BC_R
|
|
- name: INSTOF
|
|
args:
|
|
- B_R
|
|
- C_RC
|
|
- name: IN
|
|
args:
|
|
- B_R
|
|
- C_RC
|
|
- name: LABEL
|
|
args:
|
|
- BC_I
|
|
- name: ENDLABEL
|
|
args:
|
|
- BC_I
|
|
- name: EXTRA34
|
|
- name: EXTRA35
|
|
- name: EXTRA36
|
|
- name: EXTRA37
|
|
- name: EXTRA38
|
|
- name: EXTRA39
|
|
- name: EXTRA40
|
|
- name: EXTRA41
|
|
- name: EXTRA42
|
|
- name: EXTRA43
|
|
- name: EXTRA44
|
|
- name: EXTRA45
|
|
- name: EXTRA46
|
|
- name: EXTRA47
|
|
- name: EXTRA48
|
|
- name: EXTRA49
|
|
- name: EXTRA50
|
|
- name: EXTRA51
|
|
- name: EXTRA52
|
|
- name: EXTRA53
|
|
- name: EXTRA54
|
|
- name: EXTRA55
|
|
- name: EXTRA56
|
|
- name: EXTRA57
|
|
- name: EXTRA58
|
|
- name: EXTRA59
|
|
- name: EXTRA60
|
|
- name: EXTRA61
|
|
- name: EXTRA62
|
|
- name: EXTRA63
|
|
- name: EXTRA64
|
|
- name: EXTRA65
|
|
- name: EXTRA66
|
|
- name: EXTRA67
|
|
- name: EXTRA68
|
|
- name: EXTRA69
|
|
- name: EXTRA70
|
|
- name: EXTRA71
|
|
- name: EXTRA72
|
|
- name: EXTRA73
|
|
- name: EXTRA74
|
|
- name: EXTRA75
|
|
- name: EXTRA76
|
|
- name: EXTRA77
|
|
- name: EXTRA78
|
|
- name: EXTRA79
|
|
- name: EXTRA80
|
|
- name: EXTRA81
|
|
- name: EXTRA82
|
|
- name: EXTRA83
|
|
- name: EXTRA84
|
|
- name: EXTRA85
|
|
- name: EXTRA86
|
|
- name: EXTRA87
|
|
- name: EXTRA88
|
|
- name: EXTRA89
|
|
- name: EXTRA90
|
|
- name: EXTRA91
|
|
- name: EXTRA92
|
|
- name: EXTRA93
|
|
- name: EXTRA94
|
|
- name: EXTRA95
|
|
- name: EXTRA96
|
|
- name: EXTRA97
|
|
- name: EXTRA98
|
|
- name: EXTRA99
|
|
- name: EXTRA100
|
|
- name: EXTRA101
|
|
- name: EXTRA102
|
|
- name: EXTRA103
|
|
- name: EXTRA104
|
|
- name: EXTRA105
|
|
- name: EXTRA106
|
|
- name: EXTRA107
|
|
- name: EXTRA108
|
|
- name: EXTRA109
|
|
- name: EXTRA110
|
|
- name: EXTRA111
|
|
- name: EXTRA112
|
|
- name: EXTRA113
|
|
- name: EXTRA114
|
|
- name: EXTRA115
|
|
- name: EXTRA116
|
|
- name: EXTRA117
|
|
- name: EXTRA118
|
|
- name: EXTRA119
|
|
- name: EXTRA120
|
|
- name: EXTRA121
|
|
- name: EXTRA122
|
|
- name: EXTRA123
|
|
- name: EXTRA124
|
|
- name: EXTRA125
|
|
- name: EXTRA126
|
|
- name: EXTRA127
|
|
- name: EXTRA128
|
|
- name: EXTRA129
|
|
- name: EXTRA130
|
|
- name: EXTRA131
|
|
- name: EXTRA132
|
|
- name: EXTRA133
|
|
- name: EXTRA134
|
|
- name: EXTRA135
|
|
- name: EXTRA136
|
|
- name: EXTRA137
|
|
- name: EXTRA138
|
|
- name: EXTRA139
|
|
- name: EXTRA140
|
|
- name: EXTRA141
|
|
- name: EXTRA142
|
|
- name: EXTRA143
|
|
- name: EXTRA144
|
|
- name: EXTRA145
|
|
- name: EXTRA146
|
|
- name: EXTRA147
|
|
- name: EXTRA148
|
|
- name: EXTRA149
|
|
- name: EXTRA150
|
|
- name: EXTRA151
|
|
- name: EXTRA152
|
|
- name: EXTRA153
|
|
- name: EXTRA154
|
|
- name: EXTRA155
|
|
- name: EXTRA156
|
|
- name: EXTRA157
|
|
- name: EXTRA158
|
|
- name: EXTRA159
|
|
- name: EXTRA160
|
|
- name: EXTRA161
|
|
- name: EXTRA162
|
|
- name: EXTRA163
|
|
- name: EXTRA164
|
|
- name: EXTRA165
|
|
- name: EXTRA166
|
|
- name: EXTRA167
|
|
- name: EXTRA168
|
|
- name: EXTRA169
|
|
- name: EXTRA170
|
|
- name: EXTRA171
|
|
- name: EXTRA172
|
|
- name: EXTRA173
|
|
- name: EXTRA174
|
|
- name: EXTRA175
|
|
- name: EXTRA176
|
|
- name: EXTRA177
|
|
- name: EXTRA178
|
|
- name: EXTRA179
|
|
- name: EXTRA180
|
|
- name: EXTRA181
|
|
- name: EXTRA182
|
|
- name: EXTRA183
|
|
- name: EXTRA184
|
|
- name: EXTRA185
|
|
- name: EXTRA186
|
|
- name: EXTRA187
|
|
- name: EXTRA188
|
|
- name: EXTRA189
|
|
- name: EXTRA190
|
|
- name: EXTRA191
|
|
- name: EXTRA192
|
|
- name: EXTRA193
|
|
- name: EXTRA194
|
|
- name: EXTRA195
|
|
- name: EXTRA196
|
|
- name: EXTRA197
|
|
- name: EXTRA198
|
|
- name: EXTRA199
|
|
- name: EXTRA200
|
|
- name: EXTRA201
|
|
- name: EXTRA202
|
|
- name: EXTRA203
|
|
- name: EXTRA204
|
|
- name: EXTRA205
|
|
- name: EXTRA206
|
|
- name: EXTRA207
|
|
- name: EXTRA208
|
|
- name: EXTRA209
|
|
- name: EXTRA210
|
|
- name: EXTRA211
|
|
- name: EXTRA212
|
|
- name: EXTRA213
|
|
- name: EXTRA214
|
|
- name: EXTRA215
|
|
- name: EXTRA216
|
|
- name: EXTRA217
|
|
- name: EXTRA218
|
|
- name: EXTRA219
|
|
- name: EXTRA220
|
|
- name: EXTRA221
|
|
- name: EXTRA222
|
|
- name: EXTRA223
|
|
- name: EXTRA224
|
|
- name: EXTRA225
|
|
- name: EXTRA226
|
|
- name: EXTRA227
|
|
- name: EXTRA228
|
|
- name: EXTRA229
|
|
- name: EXTRA230
|
|
- name: EXTRA231
|
|
- name: EXTRA232
|
|
- name: EXTRA233
|
|
- name: EXTRA234
|
|
- name: EXTRA235
|
|
- name: EXTRA236
|
|
- name: EXTRA237
|
|
- name: EXTRA238
|
|
- name: EXTRA239
|
|
- name: EXTRA240
|
|
- name: EXTRA241
|
|
- name: EXTRA242
|
|
- name: EXTRA243
|
|
- name: EXTRA244
|
|
- name: EXTRA245
|
|
- name: EXTRA246
|
|
- name: EXTRA247
|
|
- name: EXTRA248
|
|
- name: EXTRA249
|
|
- name: EXTRA250
|
|
- name: EXTRA251
|
|
- name: EXTRA252
|
|
- name: EXTRA253
|
|
- name: EXTRA254
|
|
- name: EXTRA255
|
|
|