summaryrefslogtreecommitdiffhomepage
path: root/doc
diff options
context:
space:
mode:
authordearblue <[email protected]>2021-02-21 18:46:08 +0900
committerdearblue <[email protected]>2021-02-21 19:30:19 +0900
commit07874a3d29ff57086bb75aaa1d68c63b8ac15288 (patch)
tree9b9bea9c13fd36fc45ec450ca18c5336b49e45b3 /doc
parent6b8393081a9364e62e8033606b9da29812017f27 (diff)
downloadmruby-07874a3d29ff57086bb75aaa1d68c63b8ac15288.tar.gz
mruby-07874a3d29ff57086bb75aaa1d68c63b8ac15288.zip
Updated `doc/opcode.md` to match `include/mruby/ops.h` [ci skip]
Diffstat (limited to 'doc')
-rw-r--r--doc/opcode.md23
1 files changed, 16 insertions, 7 deletions
diff --git a/doc/opcode.md b/doc/opcode.md
index 513b28302..7273ff993 100644
--- a/doc/opcode.md
+++ b/doc/opcode.md
@@ -27,6 +27,7 @@ sign) of operands.
| OP_NOP | - | no operation |
| OP_MOVE | BB | R(a) = R(b) |
| OP_LOADL | BB | R(a) = Pool(b) |
+| OP_LOADL16 | BS | R(a) = Pool(b) |
| OP_LOADI | BB | R(a) = mrb_int(b) |
| OP_LOADINEG | BB | R(a) = mrb_int(-b) |
| OP_LOADI__1 | B | R(a) = mrb_int(-1) |
@@ -38,8 +39,10 @@ sign) of operands.
| OP_LOADI_5 | B | R(a) = mrb_int(5) |
| OP_LOADI_6 | B | R(a) = mrb_int(6) |
| OP_LOADI_7 | B | R(a) = mrb_int(7) |
-| OP_LOADI16 | BsS | R(a) = mrb_int(b) |
+| OP_LOADI16 | BS | R(a) = mrb_int(b) |
+| OP_LOADI32 | BSS | R(a) = mrb_int((b<<16)+c) |
| OP_LOADSYM | BB | R(a) = Syms(b) |
+| OP_LOADSYM16 | BS | R(a) = Syms(b) |
| OP_LOADNIL | B | R(a) = nil |
| OP_LOADSELF | B | R(a) = self |
| OP_LOADT | B | R(a) = true |
@@ -58,10 +61,10 @@ sign) of operands.
| OP_SETMCNST | BB | R(a+1)::Syms(b) = R(a) |
| OP_GETUPVAR | BBB | R(a) = uvget(b,c) |
| OP_SETUPVAR | BBB | uvset(b,c,R(a)) |
-| OP_JMP | S | pc=a |
-| OP_JMPIF | BS | if R(a) pc=b |
-| OP_JMPNOT | BS | if !R(a) pc=b |
-| OP_JMPNIL | BS | if R(a)==nil pc=b |
+| OP_JMP | S | pc+=a |
+| OP_JMPIF | BS | if R(a) pc+=b |
+| OP_JMPNOT | BS | if !R(a) pc+=b |
+| OP_JMPNIL | BS | if R(a)==nil pc+=b |
| OP_JMPUW | S | unwind_and_jump_to(a) |
| OP_EXCEPT | B | R(a) = exc |
| OP_RESCUE | BB | R(b) = R(a).isa?(R(b)) |
@@ -70,6 +73,7 @@ sign) of operands.
| OP_SENDVB | BB | R(a) = call(R(a),Syms(b),*R(a+1),&R(a+2)) |
| OP_SEND | BBB | R(a) = call(R(a),Syms(b),R(a+1),...,R(a+c)) |
| OP_SENDB | BBB | R(a) = call(R(a),Syms(b),R(a+1),...,R(a+c),&R(a+c+1)) |
+| OP_SENDVK | BB | R(a) = call(R(a),Syms(b),*R(a+1),**(a+2),&R(a+3)) |
| OP_CALL | - | R(0) = self.call(frame.argc, frame.argv) |
| OP_SUPER | BB | R(a) = super(R(a+1),... ,R(a+b+1)) |
| OP_ARGARY | BS | R(a) = argument array (16=5:1:5:1:4) |
@@ -102,19 +106,24 @@ sign) of operands.
| OP_APOST | BBB | *R(a),R(a+1)..R(a+c) = R(a)[b..] |
| OP_INTERN | B | R(a) = intern(R(a)) |
| OP_STRING | BB | R(a) = str_dup(Lit(b)) |
+| OP_STRING16 | BS | R(a) = str_dup(Lit(b)) |
| OP_STRCAT | B | str_cat(R(a),R(a+1)) |
-| OP_HASH | BB | R(a) = hash_new(R(a),R(a+1)..R(a+b)) |
-| OP_HASHADD | BB | R(a) = hash_push(R(a),R(a+1)..R(a+b)) |
+| OP_HASH | BB | R(a) = hash_new(R(a),R(a+1)..R(a+b*2-1)) |
+| OP_HASHADD | BB | R(a) = hash_push(R(a),R(a+1)..R(a+b*2)) |
| OP_HASHCAT | B | R(a) = hash_cat(R(a),R(a+1)) |
| OP_LAMBDA | BB | R(a) = lambda(SEQ[b],OP_L_LAMBDA) |
+| OP_LAMBDA16 | BS | R(a) = lambda(SEQ[b],OP_L_LAMBDA) |
| OP_BLOCK | BB | R(a) = lambda(SEQ[b],OP_L_BLOCK) |
+| OP_BLOCK16 | BS | R(a) = lambda(SEQ[b],OP_L_BLOCK) |
| OP_METHOD | BB | R(a) = lambda(SEQ[b],OP_L_METHOD) |
+| OP_METHOD16 | BS | R(a) = lambda(SEQ[b],OP_L_METHOD) |
| OP_RANGE_INC | B | R(a) = range_new(R(a),R(a+1),FALSE) |
| OP_RANGE_EXC | B | R(a) = range_new(R(a),R(a+1),TRUE) |
| OP_OCLASS | B | R(a) = ::Object |
| OP_CLASS | BB | R(a) = newclass(R(a),Syms(b),R(a+1)) |
| OP_MODULE | BB | R(a) = newmodule(R(a),Syms(b)) |
| OP_EXEC | BB | R(a) = blockexec(R(a),SEQ[b]) |
+| OP_EXEC16 | BS | R(a) = blockexec(R(a),SEQ[b]) |
| OP_DEF | BB | R(a).newmethod(Syms(b),R(a+1)) |
| OP_ALIAS | BB | alias_method(target_class,Syms(a),Syms(b)) |
| OP_UNDEF | B | undef_method(target_class,Syms(a)) |