| # 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: 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 |