Returns -1 if x>yy, 0 otherwise.\n-2^7 <= yy < 2^7.\n",
+ "fift": "[yy] GTINT\n[yy+1] GEQINT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C2yy",
+ "stack": "x - x>yy"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_cmp_int",
+ "line": 992,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "GTINT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 127,
+ "min_value": -128,
+ "name": "y",
+ "size": 8,
+ "type": "int"
+ }
+ ],
+ "prefix": "C3",
+ "tlb": "#C3 yy:int8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_int",
+ "description": "Returns -1 if x!=yy, 0 otherwise.\n-2^7 <= yy < 2^7.
\n",
+ "fift": "[yy] NEQINT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C3yy",
+ "stack": "x - x!=yy"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_cmp_int",
+ "line": 992,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "NEQINT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C4",
+ "tlb": "#C4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_int",
+ "description": "Checks whether x is a NaN.
\n",
+ "fift": "ISNAN",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "C4",
+ "stack": "x - x=NaN"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_is_nan",
+ "line": 1007,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "ISNAN",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C5",
+ "tlb": "#C5"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_int",
+ "description": "Throws an arithmetic overflow exception if x is a NaN.
\n",
+ "fift": "CHKNAN",
+ "fift_examples": [],
+ "gas": "18/68",
+ "opcode": "C5",
+ "stack": "x - x"
+ },
+ "implementation": [
+ {
+ "file": "arithops.cpp",
+ "function_name": "exec_chk_nan",
+ "line": 1016,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/arithops.cpp"
+ }
+ ],
+ "mnemonic": "CHKNAN",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C700",
+ "tlb": "#C700"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Checks whether a Slice s is empty (i.e., contains no bits of data and no cell references).
\n",
+ "fift": "SEMPTY",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C700",
+ "stack": "s - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_un_cs_cmp",
+ "line": 251,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SEMPTY",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C701",
+ "tlb": "#C701"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Checks whether Slice s has no bits of data.
\n",
+ "fift": "SDEMPTY",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C701",
+ "stack": "s - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_un_cs_cmp",
+ "line": 251,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDEMPTY",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C702",
+ "tlb": "#C702"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Checks whether Slice s has no references.
\n",
+ "fift": "SREMPTY",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C702",
+ "stack": "s - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_un_cs_cmp",
+ "line": 251,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SREMPTY",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C703",
+ "tlb": "#C703"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Checks whether the first bit of Slice s is a one.
\n",
+ "fift": "SDFIRST",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C703",
+ "stack": "s - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_un_cs_cmp",
+ "line": 251,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDFIRST",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C704",
+ "tlb": "#C704"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Compares the data of s lexicographically with the data of s', returning -1, 0, or 1 depending on the result.
\n",
+ "fift": "SDLEXCMP",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C704",
+ "stack": "s s' - x"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_ibin_cs_cmp",
+ "line": 277,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDLEXCMP",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C705",
+ "tlb": "#C705"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Checks whether the data parts of s and s' coincide, equivalent to SDLEXCMP ISZERO.
\n",
+ "fift": "SDEQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C705",
+ "stack": "s s' - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_bin_cs_cmp",
+ "line": 267,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDEQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C708",
+ "tlb": "#C708"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Checks whether s is a prefix of s'.
\n",
+ "fift": "SDPFX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C708",
+ "stack": "s s' - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_bin_cs_cmp",
+ "line": 267,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDPFX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C709",
+ "tlb": "#C709"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Checks whether s' is a prefix of s, equivalent to SWAP SDPFX.
\n",
+ "fift": "SDPFXREV",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C709",
+ "stack": "s s' - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_bin_cs_cmp",
+ "line": 267,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDPFXREV",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C70A",
+ "tlb": "#C70A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Checks whether s is a proper prefix of s' (i.e., a prefix distinct from s').
\n",
+ "fift": "SDPPFX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C70A",
+ "stack": "s s' - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_bin_cs_cmp",
+ "line": 267,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDPPFX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C70B",
+ "tlb": "#C70B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Checks whether s' is a proper prefix of s.
\n",
+ "fift": "SDPPFXREV",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C70B",
+ "stack": "s s' - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_bin_cs_cmp",
+ "line": 267,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDPPFXREV",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C70C",
+ "tlb": "#C70C"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Checks whether s is a suffix of s'.
\n",
+ "fift": "SDSFX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C70C",
+ "stack": "s s' - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_bin_cs_cmp",
+ "line": 267,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDSFX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C70D",
+ "tlb": "#C70D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Checks whether s' is a suffix of s.
\n",
+ "fift": "SDSFXREV",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C70D",
+ "stack": "s s' - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_bin_cs_cmp",
+ "line": 267,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDSFXREV",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C70E",
+ "tlb": "#C70E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Checks whether s is a proper suffix of s'.
\n",
+ "fift": "SDPSFX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C70E",
+ "stack": "s s' - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_bin_cs_cmp",
+ "line": 267,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDPSFX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C70F",
+ "tlb": "#C70F"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Checks whether s' is a proper suffix of s.
\n",
+ "fift": "SDPSFXREV",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C70F",
+ "stack": "s s' - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_bin_cs_cmp",
+ "line": 267,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDPSFXREV",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C710",
+ "tlb": "#C710"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Returns the number of leading zeroes in s.
\n",
+ "fift": "SDCNTLEAD0",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C710",
+ "stack": "s - n"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_iun_cs_cmp",
+ "line": 259,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDCNTLEAD0",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C711",
+ "tlb": "#C711"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Returns the number of leading ones in s.
\n",
+ "fift": "SDCNTLEAD1",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C711",
+ "stack": "s - n"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_iun_cs_cmp",
+ "line": 259,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDCNTLEAD1",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C712",
+ "tlb": "#C712"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Returns the number of trailing zeroes in s.
\n",
+ "fift": "SDCNTTRAIL0",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C712",
+ "stack": "s - n"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_iun_cs_cmp",
+ "line": 259,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDCNTTRAIL0",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C713",
+ "tlb": "#C713"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "compare_other",
+ "description": "Returns the number of trailing ones in s.
\n",
+ "fift": "SDCNTTRAIL1",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "C713",
+ "stack": "s - n"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_iun_cs_cmp",
+ "line": 259,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDCNTTRAIL1",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C8",
+ "tlb": "#C8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Creates a new empty Builder.
\n",
+ "fift": "NEWC",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "C8",
+ "stack": "- b"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_new_builder",
+ "line": 334,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "NEWC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "C9",
+ "tlb": "#C9"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Converts a Builder into an ordinary Cell.
\n",
+ "fift": "ENDC",
+ "fift_examples": [],
+ "gas": "518",
+ "opcode": "C9",
+ "stack": "b - c"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_builder_to_cell",
+ "line": 341,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "ENDC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "CA",
+ "tlb": "#CA cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Stores a signed cc+1-bit integer x into Builder b for 0 <= cc <= 255, throws a range check exception if x does not fit into cc+1 bits.
\n",
+ "fift": "[cc+1] STI",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CAcc",
+ "stack": "x b - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_fixed",
+ "line": 622,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STI",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "CB",
+ "tlb": "#CB cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Stores an unsigned cc+1-bit integer x into Builder b. In all other respects it is similar to STI.
\n",
+ "fift": "[cc+1] STU",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CBcc",
+ "stack": "x b - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_fixed",
+ "line": 622,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STU",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CC",
+ "tlb": "#CC"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Stores a reference to Cell c into Builder b.
\n",
+ "fift": "STREF",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "CC",
+ "stack": "c b - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_ref",
+ "line": 415,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CD",
+ "tlb": "#CD"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Equivalent to ENDC SWAP STREF.
\n",
+ "fift": "STBREFR\nENDCST",
+ "fift_examples": [],
+ "gas": "518",
+ "opcode": "CD",
+ "stack": "b b'' - b"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_builder_as_ref_rev",
+ "line": 484,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STBREFR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "child",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CE",
+ "tlb": "#CE"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Stores Slice s into Builder b.
\n",
+ "fift": "STSLICE",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "CE",
+ "stack": "s b - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_slice",
+ "line": 507,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STSLICE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF00",
+ "tlb": "#CF00"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Stores a signed l-bit integer x into b for 0 <= l <= 257.
\n",
+ "fift": "STIX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF00",
+ "stack": "x b l - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_var",
+ "line": 599,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STIX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF01",
+ "tlb": "#CF01"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Stores an unsigned l-bit integer x into b for 0 <= l <= 256.
\n",
+ "fift": "STUX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF01",
+ "stack": "x b l - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_var",
+ "line": 599,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STUX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF02",
+ "tlb": "#CF02"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Similar to STIX, but with arguments in a different order.
\n",
+ "fift": "STIXR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF02",
+ "stack": "b x l - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_var",
+ "line": 599,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STIXR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF03",
+ "tlb": "#CF03"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Similar to STUX, but with arguments in a different order.
\n",
+ "fift": "STUXR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF03",
+ "stack": "b x l - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_var",
+ "line": 599,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STUXR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF04",
+ "tlb": "#CF04"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "A quiet version of STIX. If there is no space in b, sets b'=b and f=-1.\nIf x does not fit into l bits, sets b'=b and f=1.\nIf the operation succeeds, b' is the new Builder and f=0.\nHowever, 0 <= l <= 257, with a range check exception if this is not so.
\n",
+ "fift": "STIXQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF04",
+ "stack": "x b l - x b f or b' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_var",
+ "line": 599,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STIXQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": -1
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF05",
+ "tlb": "#CF05"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "A quiet version of STUX.
\n",
+ "fift": "STUXQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF05",
+ "stack": "x b l - x b f or b' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_var",
+ "line": 599,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STUXQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": -1
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF06",
+ "tlb": "#CF06"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "A quiet version of STIXR.
\n",
+ "fift": "STIXRQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF06",
+ "stack": "b x l - b x f or b' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_var",
+ "line": 599,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STIXRQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ },
+ {
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": 1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF07",
+ "tlb": "#CF07"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "A quiet version of STUXR.
\n",
+ "fift": "STUXRQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF07",
+ "stack": "b x l - b x f or b' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_var",
+ "line": 599,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STUXRQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ },
+ {
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": 1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "CF08",
+ "tlb": "#CF08 cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "A longer version of [cc+1] STI.
\n",
+ "fift": "[cc+1] STI_l",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "CF08cc",
+ "stack": "x b - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_fixed",
+ "line": 622,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STI_ALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "CF09",
+ "tlb": "#CF09 cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "A longer version of [cc+1] STU.
\n",
+ "fift": "[cc+1] STU_l",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "CF09cc",
+ "stack": "x b - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_fixed",
+ "line": 622,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STU_ALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "CF0A",
+ "tlb": "#CF0A cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Equivalent to SWAP [cc+1] STI.
\n",
+ "fift": "[cc+1] STIR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "CF0Acc",
+ "stack": "b x - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_fixed",
+ "line": 622,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STIR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "CF0B",
+ "tlb": "#CF0B cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Equivalent to SWAP [cc+1] STU.
\n",
+ "fift": "[cc+1] STUR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "CF0Bcc",
+ "stack": "b x - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_fixed",
+ "line": 622,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STUR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "CF0C",
+ "tlb": "#CF0C cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "A quiet version of STI.
\n",
+ "fift": "[cc+1] STIQ",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "CF0Ccc",
+ "stack": "x b - x b f or b' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_fixed",
+ "line": 622,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STIQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": -1
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "CF0D",
+ "tlb": "#CF0D cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "A quiet version of STU.
\n",
+ "fift": "[cc+1] STUQ",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "CF0Dcc",
+ "stack": "x b - x b f or b' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_fixed",
+ "line": 622,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STUQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": -1
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "CF0E",
+ "tlb": "#CF0E cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "A quiet version of STIR.
\n",
+ "fift": "[cc+1] STIRQ",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "CF0Ecc",
+ "stack": "b x - b x f or b' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_fixed",
+ "line": 622,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STIRQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ },
+ {
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": 1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "CF0F",
+ "tlb": "#CF0F cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "A quiet version of STUR.
\n",
+ "fift": "[cc+1] STURQ",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "CF0Fcc",
+ "stack": "b x - b x f or b' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_fixed",
+ "line": 622,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STURQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ },
+ {
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": 1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF10",
+ "tlb": "#CF10"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "A longer version of STREF.
\n",
+ "fift": "STREF_l",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF10",
+ "stack": "c b - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_ref_rev",
+ "line": 438,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STREF_ALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF11",
+ "tlb": "#CF11"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Equivalent to SWAP STBREFR.
\n",
+ "fift": "STBREF",
+ "fift_examples": [],
+ "gas": "526",
+ "opcode": "CF11",
+ "stack": "b' b - b''"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_builder_as_ref",
+ "line": 461,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STBREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "child",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF12",
+ "tlb": "#CF12"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "A longer version of STSLICE.
\n",
+ "fift": "STSLICE_l",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF12",
+ "stack": "s b - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_slice",
+ "line": 507,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STSLICE_ALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF13",
+ "tlb": "#CF13"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Appends all data from Builder b' to Builder b.
\n",
+ "fift": "STB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF13",
+ "stack": "b' b - b''"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_builder",
+ "line": 553,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b3",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF14",
+ "tlb": "#CF14"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Equivalent to SWAP STREF.
\n",
+ "fift": "STREFR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF14",
+ "stack": "b c - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_ref_rev",
+ "line": 438,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STREFR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF15",
+ "tlb": "#CF15"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "A longer encoding of STBREFR.
\n",
+ "fift": "STBREFR_l",
+ "fift_examples": [],
+ "gas": "526",
+ "opcode": "CF15",
+ "stack": "b b' - b''"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_builder_as_ref_rev",
+ "line": 484,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STBREFR_ALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b3",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF16",
+ "tlb": "#CF16"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Equivalent to SWAP STSLICE.
\n",
+ "fift": "STSLICER",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF16",
+ "stack": "b s - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_slice_rev",
+ "line": 530,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STSLICER",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF17",
+ "tlb": "#CF17"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Concatenates two builders.\nEquivalent to SWAP STB.
\n",
+ "fift": "STBR\nBCONCAT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF17",
+ "stack": "b b' - b''"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_builder_rev",
+ "line": 576,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STBR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b3",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF18",
+ "tlb": "#CF18"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Quiet version of STREF.
\n",
+ "fift": "STREFQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF18",
+ "stack": "c b - c b -1 or b' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_ref",
+ "line": 415,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STREFQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF19",
+ "tlb": "#CF19"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Quiet version of STBREF.
\n",
+ "fift": "STBREFQ",
+ "fift_examples": [],
+ "gas": "526",
+ "opcode": "CF19",
+ "stack": "b' b - b' b -1 or b'' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_builder_as_ref",
+ "line": 461,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STBREFQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b3",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF1A",
+ "tlb": "#CF1A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Quiet version of STSLICE.
\n",
+ "fift": "STSLICEQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF1A",
+ "stack": "s b - s b -1 or b' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_slice",
+ "line": 507,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STSLICEQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF1B",
+ "tlb": "#CF1B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Quiet version of STB.
\n",
+ "fift": "STBQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF1B",
+ "stack": "b' b - b' b -1 or b'' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_builder",
+ "line": 553,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STBQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b3",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF1C",
+ "tlb": "#CF1C"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Quiet version of STREFR.
\n",
+ "fift": "STREFRQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF1C",
+ "stack": "b c - b c -1 or b' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_ref_rev",
+ "line": 438,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STREFRQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF1D",
+ "tlb": "#CF1D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Quiet version of STBREFR.
\n",
+ "fift": "STBREFRQ",
+ "fift_examples": [],
+ "gas": "526",
+ "opcode": "CF1D",
+ "stack": "b b' - b b' -1 or b'' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_builder_as_ref_rev",
+ "line": 484,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STBREFRQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b3",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF1E",
+ "tlb": "#CF1E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Quiet version of STSLICER.
\n",
+ "fift": "STSLICERQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF1E",
+ "stack": "b s - b s -1 or b'' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_slice_rev",
+ "line": 530,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STSLICERQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b3",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF1F",
+ "tlb": "#CF1F"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Quiet version of STBR.
\n",
+ "fift": "STBRQ\nBCONCATQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF1F",
+ "stack": "b b' - b b' -1 or b'' 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_builder_rev",
+ "line": 576,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STBRQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b3",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "name": "c",
+ "type": "ref"
+ }
+ ],
+ "prefix": "CF20",
+ "tlb": "#CF20 c:^Cell"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Equivalent to PUSHREF STREFR.
\n",
+ "fift": "[ref] STREFCONST",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF20",
+ "stack": "b - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_const_ref",
+ "line": 647,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STREFCONST",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "name": "c1",
+ "type": "ref"
+ },
+ {
+ "display_hints": [],
+ "name": "c2",
+ "type": "ref"
+ }
+ ],
+ "prefix": "CF21",
+ "tlb": "#CF21 c1:^Cell c2:^Cell"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Equivalent to STREFCONST STREFCONST.
\n",
+ "fift": "[ref] [ref] STREF2CONST",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF21",
+ "stack": "b - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_const_ref",
+ "line": 647,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STREF2CONST",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF23",
+ "tlb": "#CF23"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "If x!=0, creates a special or exotic cell from Builder b.\nThe type of the exotic cell must be stored in the first 8 bits of b.\nIf x=0, it is equivalent to ENDC. Otherwise some validity checks on the data and references of b are performed before creating the exotic cell.
\n",
+ "fift": "ENDXC",
+ "fift_examples": [],
+ "gas": "526",
+ "opcode": "CF23",
+ "stack": "b x - c"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_builder_to_special_cell",
+ "line": 349,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "ENDXC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF28",
+ "tlb": "#CF28"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Stores a little-endian signed 32-bit integer.
\n",
+ "fift": "STILE4",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF28",
+ "stack": "x b - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_fixed",
+ "line": 622,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STILE4",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF29",
+ "tlb": "#CF29"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Stores a little-endian unsigned 32-bit integer.
\n",
+ "fift": "STULE4",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF29",
+ "stack": "x b - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_fixed",
+ "line": 622,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STULE4",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF2A",
+ "tlb": "#CF2A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Stores a little-endian signed 64-bit integer.
\n",
+ "fift": "STILE8",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF2A",
+ "stack": "x b - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_fixed",
+ "line": 622,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STILE8",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF2B",
+ "tlb": "#CF2B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Stores a little-endian unsigned 64-bit integer.
\n",
+ "fift": "STULE8",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF2B",
+ "stack": "x b - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_int_fixed",
+ "line": 622,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STULE8",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF30",
+ "tlb": "#CF30"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Returns the depth of Builder b. If no cell references are stored in b, then x=0; otherwise x is one plus the maximum of depths of cells referred to from b.
\n",
+ "fift": "BDEPTH",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF30",
+ "stack": "b - x"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_int_builder_func",
+ "line": 704,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BDEPTH",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF31",
+ "tlb": "#CF31"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Returns the number of data bits already stored in Builder b.
\n",
+ "fift": "BBITS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF31",
+ "stack": "b - x"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_int_builder_func",
+ "line": 704,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BBITS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF32",
+ "tlb": "#CF32"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Returns the number of cell references already stored in b.
\n",
+ "fift": "BREFS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF32",
+ "stack": "b - y"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_int_builder_func",
+ "line": 704,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BREFS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF33",
+ "tlb": "#CF33"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Returns the numbers of both data bits and cell references in b.
\n",
+ "fift": "BBITREFS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF33",
+ "stack": "b - x y"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_2int_builder_func",
+ "line": 712,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BBITREFS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF35",
+ "tlb": "#CF35"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Returns the number of data bits that can still be stored in b.
\n",
+ "fift": "BREMBITS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF35",
+ "stack": "b - x'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_int_builder_func",
+ "line": 704,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BREMBITS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF36",
+ "tlb": "#CF36"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Returns the number of references that can still be stored in b.
\n",
+ "fift": "BREMREFS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF36",
+ "stack": "b - y'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_int_builder_func",
+ "line": 704,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BREMREFS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "y2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF37",
+ "tlb": "#CF37"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Returns the numbers of both data bits and references that can still be stored in b.
\n",
+ "fift": "BREMBITREFS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF37",
+ "stack": "b - x' y'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_2int_builder_func",
+ "line": 712,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BREMBITREFS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "CF38",
+ "tlb": "#CF38 cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Checks whether cc+1 bits can be stored into b, where 0 <= cc <= 255.
\n",
+ "fift": "[cc+1] BCHKBITS#",
+ "fift_examples": [],
+ "gas": "34/84",
+ "opcode": "CF38cc",
+ "stack": "b -"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_builder_chk_bits_refs",
+ "line": 737,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BCHKBITS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF39",
+ "tlb": "#CF39"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Checks whether x bits can be stored into b, 0 <= x <= 1023. If there is no space for x more bits in b, or if x is not within the range 0...1023, throws an exception.
\n",
+ "fift": "BCHKBITS",
+ "fift_examples": [],
+ "gas": "26/76",
+ "opcode": "CF39",
+ "stack": "b x - "
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_builder_chk_bits_refs",
+ "line": 737,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BCHKBITS_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF3A",
+ "tlb": "#CF3A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Checks whether y references can be stored into b, 0 <= y <= 7.
\n",
+ "fift": "BCHKREFS",
+ "fift_examples": [],
+ "gas": "26/76",
+ "opcode": "CF3A",
+ "stack": "b y - "
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_builder_chk_bits_refs",
+ "line": 737,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BCHKREFS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF3B",
+ "tlb": "#CF3B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Checks whether x bits and y references can be stored into b, 0 <= x <= 1023, 0 <= y <= 7.
\n",
+ "fift": "BCHKBITREFS",
+ "fift_examples": [],
+ "gas": "26/76",
+ "opcode": "CF3B",
+ "stack": "b x y - "
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_builder_chk_bits_refs",
+ "line": 737,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BCHKBITREFS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "CF3C",
+ "tlb": "#CF3C cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Checks whether cc+1 bits can be stored into b, where 0 <= cc <= 255.
\n",
+ "fift": "[cc+1] BCHKBITSQ#",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "CF3Ccc",
+ "stack": "b - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_builder_chk_bits_refs",
+ "line": 737,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BCHKBITSQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF3D",
+ "tlb": "#CF3D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Checks whether x bits can be stored into b, 0 <= x <= 1023.
\n",
+ "fift": "BCHKBITSQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF3D",
+ "stack": "b x - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_builder_chk_bits_refs",
+ "line": 737,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BCHKBITSQ_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF3E",
+ "tlb": "#CF3E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Checks whether y references can be stored into b, 0 <= y <= 7.
\n",
+ "fift": "BCHKREFSQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF3E",
+ "stack": "b y - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_builder_chk_bits_refs",
+ "line": 737,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BCHKREFSQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF3F",
+ "tlb": "#CF3F"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Checks whether x bits and y references can be stored into b, 0 <= x <= 1023, 0 <= y <= 7.
\n",
+ "fift": "BCHKBITREFSQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF3F",
+ "stack": "b x y - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_builder_chk_bits_refs",
+ "line": 737,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BCHKBITREFSQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF40",
+ "tlb": "#CF40"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Stores n binary zeroes into Builder b.
\n",
+ "fift": "STZEROES",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF40",
+ "stack": "b n - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_same",
+ "line": 752,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STZEROES",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF41",
+ "tlb": "#CF41"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Stores n binary ones into Builder b.
\n",
+ "fift": "STONES",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF41",
+ "stack": "b n - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_same",
+ "line": 752,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STONES",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF42",
+ "tlb": "#CF42"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Stores n binary xes (0 <= x <= 1) into Builder b.
\n",
+ "fift": "STSAME",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF42",
+ "stack": "b n x - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_same",
+ "line": 752,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STSAME",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "CF50",
+ "tlb": "#CF50"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Same as ENDC CTOS, but without gas cost for cell creation and loading.
\n",
+ "fift": "BTOS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "CF50",
+ "stack": "b - s"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_builder_to_slice",
+ "line": 767,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "BTOS",
+ "since_version": 12,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "bits_length_var_size": 3,
+ "bits_padding": 2,
+ "completion_tag": true,
+ "display_hints": [],
+ "max_bits": 57,
+ "max_refs": 3,
+ "min_bits": 0,
+ "min_refs": 0,
+ "name": "s",
+ "refs_add": 0,
+ "refs_length_var_size": 2,
+ "type": "subslice"
+ }
+ ],
+ "prefix": "CFC_",
+ "tlb": "#CFC_ x:(## 2) y:(## 3) c:(x * ^Cell) sss:((8 * y + 2) * Bit)"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_build",
+ "description": "Stores a constant subslice sss.\nDetails: sss consists of 0 <= x <= 3 references and up to 8y+2 data bits, with 0 <= y <= 7. Completion bit is assumed.\nNote that the assembler can replace STSLICECONST with PUSHSLICE STSLICER if the slice is too big.
\n",
+ "fift": "[slice] STSLICECONST",
+ "fift_examples": [],
+ "gas": "24",
+ "opcode": "CFC_xysss",
+ "stack": "b - b'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_store_const_slice",
+ "line": 776,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "STSLICECONST",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D0",
+ "tlb": "#D0"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Converts a Cell into a Slice. Notice that c must be either an ordinary cell, or an exotic cell which is automatically loaded to yield an ordinary cell c', converted into a Slice afterwards.
\n",
+ "fift": "CTOS",
+ "fift_examples": [],
+ "gas": "118/43",
+ "opcode": "D0",
+ "stack": "c - s"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_cell_to_slice",
+ "line": 883,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "CTOS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D1",
+ "tlb": "#D1"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Removes a Slice s from the stack, and throws an exception if it is not empty.
\n",
+ "fift": "ENDS",
+ "fift_examples": [],
+ "gas": "18/68",
+ "opcode": "D1",
+ "stack": "s - "
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_chk_empty",
+ "line": 946,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "ENDS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D2",
+ "tlb": "#D2 cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Loads (i.e., parses) a signed cc+1-bit integer x from Slice s, and returns the remainder of s as s'.
\n",
+ "fift": "[cc+1] LDI",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D2cc",
+ "stack": "s - x s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_fixed",
+ "line": 981,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDI",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D3",
+ "tlb": "#D3 cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Loads an unsigned cc+1-bit integer x from Slice s.
\n",
+ "fift": "[cc+1] LDU",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D3cc",
+ "stack": "s - x s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_fixed",
+ "line": 981,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDU",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D4",
+ "tlb": "#D4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Loads a cell reference c from s.
\n",
+ "fift": "LDREF",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "D4",
+ "stack": "s - c s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_ref",
+ "line": 1013,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D5",
+ "tlb": "#D5"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Equivalent to LDREF SWAP CTOS.
\n",
+ "fift": "LDREFRTOS",
+ "fift_examples": [],
+ "gas": "118/43",
+ "opcode": "D5",
+ "stack": "s - s' s''"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_ref_rev_to_slice",
+ "line": 1036,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDREFRTOS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D6",
+ "tlb": "#D6 cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Cuts the next cc+1 bits of s into a separate Slice s''.
\n",
+ "fift": "[cc+1] LDSLICE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D6cc",
+ "stack": "s - s'' s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_slice",
+ "line": 1137,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDSLICE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D700",
+ "tlb": "#D700"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Loads a signed l-bit (0 <= l <= 257) integer x from Slice s, and returns the remainder of s as s'.
\n",
+ "fift": "LDIX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D700",
+ "stack": "s l - x s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_var",
+ "line": 1090,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDIX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D701",
+ "tlb": "#D701"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Loads an unsigned l-bit integer x from (the first l bits of) s, with 0 <= l <= 256.
\n",
+ "fift": "LDUX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D701",
+ "stack": "s l - x s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_var",
+ "line": 1090,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDUX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D702",
+ "tlb": "#D702"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Preloads a signed l-bit integer from Slice s, for 0 <= l <= 257.
\n",
+ "fift": "PLDIX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D702",
+ "stack": "s l - x"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDIX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D703",
+ "tlb": "#D703"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Preloads an unsigned l-bit integer from s, for 0 <= l <= 256.
\n",
+ "fift": "PLDUX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D703",
+ "stack": "s l - x"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDUX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D704",
+ "tlb": "#D704"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Quiet version of LDIX: loads a signed l-bit integer from s similarly to LDIX, but returns a success flag, equal to -1 on success or to 0 on failure (if s does not have l bits), instead of throwing a cell underflow exception.
\n",
+ "fift": "LDIXQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D704",
+ "stack": "s l - x s' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_var",
+ "line": 1090,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDIXQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D705",
+ "tlb": "#D705"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Quiet version of LDUX.
\n",
+ "fift": "LDUXQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D705",
+ "stack": "s l - x s' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_var",
+ "line": 1090,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDUXQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D706",
+ "tlb": "#D706"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Quiet version of PLDIX.
\n",
+ "fift": "PLDIXQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D706",
+ "stack": "s l - x -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDIXQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D707",
+ "tlb": "#D707"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Quiet version of PLDUX.
\n",
+ "fift": "PLDUXQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D707",
+ "stack": "s l - x -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDUXQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D708",
+ "tlb": "#D708 cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "A longer encoding for LDI.
\n",
+ "fift": "[cc+1] LDI_l",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "D708cc",
+ "stack": "s - x s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_fixed",
+ "line": 981,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDI_ALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D709",
+ "tlb": "#D709 cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "A longer encoding for LDU.
\n",
+ "fift": "[cc+1] LDU_l",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "D709cc",
+ "stack": "s - x s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_fixed",
+ "line": 981,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDU_ALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D70A",
+ "tlb": "#D70A cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Preloads a signed cc+1-bit integer from Slice s.
\n",
+ "fift": "[cc+1] PLDI",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "D70Acc",
+ "stack": "s - x"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDI",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D70B",
+ "tlb": "#D70B cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Preloads an unsigned cc+1-bit integer from s.
\n",
+ "fift": "[cc+1] PLDU",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "D70Bcc",
+ "stack": "s - x"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDU",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D70C",
+ "tlb": "#D70C cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "A quiet version of LDI.
\n",
+ "fift": "[cc+1] LDIQ",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "D70Ccc",
+ "stack": "s - x s' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_fixed",
+ "line": 981,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDIQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D70D",
+ "tlb": "#D70D cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "A quiet version of LDU.
\n",
+ "fift": "[cc+1] LDUQ",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "D70Dcc",
+ "stack": "s - x s' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_fixed",
+ "line": 981,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDUQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D70E",
+ "tlb": "#D70E cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "A quiet version of PLDI.
\n",
+ "fift": "[cc+1] PLDIQ",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "D70Ecc",
+ "stack": "s - x -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDIQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D70F",
+ "tlb": "#D70F cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "A quiet version of PLDU.
\n",
+ "fift": "[cc+1] PLDUQ",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "D70Fcc",
+ "stack": "s - x -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDUQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "plduz"
+ }
+ ],
+ "max_value": 7,
+ "min_value": 0,
+ "name": "c",
+ "size": 3,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D714_",
+ "tlb": "#D714_ c:uint3"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Preloads the first 32(c+1) bits of Slice s into an unsigned integer x, for 0 <= c <= 7. If s is shorter than necessary, missing bits are assumed to be zero. This operation is intended to be used along with IFBITJMP and similar instructions.
\n",
+ "fift": "[32(c+1)] PLDUZ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D714_c",
+ "stack": "s - s x"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDUZ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D718",
+ "tlb": "#D718"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Loads the first 0 <= l <= 1023 bits from Slice s into a separate Slice s'', returning the remainder of s as s'.
\n",
+ "fift": "LDSLICEX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D718",
+ "stack": "s l - s'' s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_slice",
+ "line": 1137,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDSLICEX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D719",
+ "tlb": "#D719"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns the first 0 <= l <= 1023 bits of s as s''.
\n",
+ "fift": "PLDSLICEX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D719",
+ "stack": "s l - s''"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_slice",
+ "line": 1137,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDSLICEX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D71A",
+ "tlb": "#D71A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "A quiet version of LDSLICEX.
\n",
+ "fift": "LDSLICEXQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D71A",
+ "stack": "s l - s'' s' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_slice",
+ "line": 1137,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDSLICEXQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D71B",
+ "tlb": "#D71B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "A quiet version of LDSLICEXQ.
\n",
+ "fift": "PLDSLICEXQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D71B",
+ "stack": "s l - s' -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_slice",
+ "line": 1137,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDSLICEXQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D71C",
+ "tlb": "#D71C cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "A longer encoding for LDSLICE.
\n",
+ "fift": "[cc+1] LDSLICE_l",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "D71Ccc",
+ "stack": "s - s'' s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_slice",
+ "line": 1137,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDSLICE_ALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D71D",
+ "tlb": "#D71D cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns the first 0 < cc+1 <= 256 bits of s as s''.
\n",
+ "fift": "[cc+1] PLDSLICE",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "D71Dcc",
+ "stack": "s - s''"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_slice",
+ "line": 1137,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDSLICE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D71E",
+ "tlb": "#D71E cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "A quiet version of LDSLICE.
\n",
+ "fift": "[cc+1] LDSLICEQ",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "D71Ecc",
+ "stack": "s - s'' s' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_slice",
+ "line": 1137,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDSLICEQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": 1
+ }
+ ],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "c",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D71F",
+ "tlb": "#D71F cc:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "A quiet version of PLDSLICE.
\n",
+ "fift": "[cc+1] PLDSLICEQ",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "D71Fcc",
+ "stack": "s - s'' -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_slice",
+ "line": 1137,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDSLICEQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D720",
+ "tlb": "#D720"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns the first 0 <= l <= 1023 bits of s. It is equivalent to PLDSLICEX.
\n",
+ "fift": "SDCUTFIRST",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D720",
+ "stack": "s l - s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_op_args",
+ "line": 1167,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDCUTFIRST",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D721",
+ "tlb": "#D721"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns all but the first 0 <= l <= 1023 bits of s. It is equivalent to LDSLICEX NIP.
\n",
+ "fift": "SDSKIPFIRST",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D721",
+ "stack": "s l - s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_op_args",
+ "line": 1167,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDSKIPFIRST",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D722",
+ "tlb": "#D722"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns the last 0 <= l <= 1023 bits of s.
\n",
+ "fift": "SDCUTLAST",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D722",
+ "stack": "s l - s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_op_args",
+ "line": 1167,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDCUTLAST",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D723",
+ "tlb": "#D723"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns all but the last 0 <= l <= 1023 bits of s.
\n",
+ "fift": "SDSKIPLAST",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D723",
+ "stack": "s l - s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_op_args",
+ "line": 1167,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDSKIPLAST",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D724",
+ "tlb": "#D724"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns 0 <= l' <= 1023 bits of s starting from offset 0 <= l <= 1023, thus extracting a bit substring out of the data of s.
\n",
+ "fift": "SDSUBSTR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D724",
+ "stack": "s l l' - s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_op_args2",
+ "line": 1181,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDSUBSTR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "l2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D726",
+ "tlb": "#D726"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Checks whether s begins with (the data bits of) s', and removes s' from s on success. On failure throws a cell deserialization exception. Primitive SDPFXREV can be considered a quiet version of SDBEGINSX.
\n",
+ "fift": "SDBEGINSX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D726",
+ "stack": "s s' - s''"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_begins_with",
+ "line": 1215,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDBEGINSX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D727",
+ "tlb": "#D727"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "A quiet version of SDBEGINSX.
\n",
+ "fift": "SDBEGINSXQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D727",
+ "stack": "s s' - s'' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_begins_with",
+ "line": 1215,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDBEGINSXQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "bits_length_var_size": 7,
+ "bits_padding": 3,
+ "completion_tag": true,
+ "display_hints": [],
+ "max_bits": 1018,
+ "max_refs": 0,
+ "min_bits": 0,
+ "min_refs": 0,
+ "name": "s",
+ "type": "subslice"
+ }
+ ],
+ "prefix": "D72A_",
+ "tlb": "#D72A_ x:(## 7) sss:((8 * x + 3) * Bit)"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Checks whether s begins with constant bitstring sss of length 8x+3 (with continuation bit assumed), where 0 <= x <= 127, and removes sss from s on success.
\n",
+ "fift": "[slice] SDBEGINS",
+ "fift_examples": [],
+ "gas": "31",
+ "opcode": "D72A_xsss",
+ "stack": "s - s''"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_begins_with_const",
+ "line": 1222,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDBEGINS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "bits_length_var_size": 7,
+ "bits_padding": 3,
+ "completion_tag": true,
+ "display_hints": [],
+ "max_bits": 1018,
+ "max_refs": 0,
+ "min_bits": 0,
+ "min_refs": 0,
+ "name": "s",
+ "type": "subslice"
+ }
+ ],
+ "prefix": "D72E_",
+ "tlb": "#D72E_ x:(## 7) sss:((8 * x + 3) * Bit)"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "A quiet version of SDBEGINS.
\n",
+ "fift": "[slice] SDBEGINSQ",
+ "fift_examples": [],
+ "gas": "31",
+ "opcode": "D72E_xsss",
+ "stack": "s - s'' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_begins_with_const",
+ "line": 1222,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDBEGINSQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D730",
+ "tlb": "#D730"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns the first 0 <= l <= 1023 bits and first 0 <= r <= 4 references of s.
\n",
+ "fift": "SCUTFIRST",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D730",
+ "stack": "s l r - s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_op_args2",
+ "line": 1181,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SCUTFIRST",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D731",
+ "tlb": "#D731"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns all but the first l bits of s and r references of s.
\n",
+ "fift": "SSKIPFIRST",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D731",
+ "stack": "s l r - s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_op_args2",
+ "line": 1181,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SSKIPFIRST",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D732",
+ "tlb": "#D732"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns the last 0 <= l <= 1023 data bits and last 0 <= r <= 4 references of s.
\n",
+ "fift": "SCUTLAST",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D732",
+ "stack": "s l r - s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_op_args2",
+ "line": 1181,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SCUTLAST",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D733",
+ "tlb": "#D733"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns all but the last l bits of s and r references of s.
\n",
+ "fift": "SSKIPLAST",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D733",
+ "stack": "s l r - s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_op_args2",
+ "line": 1181,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SSKIPLAST",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D734",
+ "tlb": "#D734"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns 0 <= l' <= 1023 bits and 0 <= r' <= 4 references from Slice s, after skipping the first 0 <= l <= 1023 bits and first 0 <= r <= 4 references.
\n",
+ "fift": "SUBSLICE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D734",
+ "stack": "s l r l' r' - s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_subslice",
+ "line": 1246,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SUBSLICE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "l2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D736",
+ "tlb": "#D736"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Splits the first 0 <= l <= 1023 data bits and first 0 <= r <= 4 references from s into s', returning the remainder of s as s''.
\n",
+ "fift": "SPLIT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D736",
+ "stack": "s l r - s' s''"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_split",
+ "line": 1260,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SPLIT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D737",
+ "tlb": "#D737"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "A quiet version of SPLIT.
\n",
+ "fift": "SPLITQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D737",
+ "stack": "s l r - s' s'' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_split",
+ "line": 1260,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SPLITQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D739",
+ "tlb": "#D739"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Transforms an ordinary or exotic cell into a Slice, as if it were an ordinary cell. A flag is returned indicating whether c is exotic. If that be the case, its type can later be deserialized from the first eight bits of s.
\n",
+ "fift": "XCTOS",
+ "fift_examples": [],
+ "gas": "126/51",
+ "opcode": "D739",
+ "stack": "c - s ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_cell_to_slice_maybe_special",
+ "line": 891,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "XCTOS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "flag",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D73A",
+ "tlb": "#D73A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Loads an exotic cell c and returns an ordinary cell c'. If c is already ordinary, does nothing. If c cannot be loaded, throws an exception.
\n",
+ "fift": "XLOAD",
+ "fift_examples": [],
+ "gas": "126/51",
+ "opcode": "D73A",
+ "stack": "c - c'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_special_cell",
+ "line": 901,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "XLOAD",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D73B",
+ "tlb": "#D73B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Loads an exotic cell c and returns an ordinary cell c'. If c is already ordinary, does nothing. If c cannot be loaded, returns 0.
\n",
+ "fift": "XLOADQ",
+ "fift_examples": [],
+ "gas": "126/51",
+ "opcode": "D73B",
+ "stack": "c - c' -1 or c 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_special_cell",
+ "line": 901,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "XLOADQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D741",
+ "tlb": "#D741"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Checks whether there are at least l data bits in Slice s. If this is not the case, throws a cell deserialisation (i.e., cell underflow) exception.
\n",
+ "fift": "SCHKBITS",
+ "fift_examples": [],
+ "gas": "26/76",
+ "opcode": "D741",
+ "stack": "s l - "
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_chk_op_args",
+ "line": 1285,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SCHKBITS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D742",
+ "tlb": "#D742"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Checks whether there are at least r references in Slice s.
\n",
+ "fift": "SCHKREFS",
+ "fift_examples": [],
+ "gas": "26/76",
+ "opcode": "D742",
+ "stack": "s r - "
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_chk_op_args",
+ "line": 1285,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SCHKREFS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D743",
+ "tlb": "#D743"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Checks whether there are at least l data bits and r references in Slice s.
\n",
+ "fift": "SCHKBITREFS",
+ "fift_examples": [],
+ "gas": "26/76",
+ "opcode": "D743",
+ "stack": "s l r - "
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_chk_op_args2",
+ "line": 1301,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SCHKBITREFS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D745",
+ "tlb": "#D745"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Checks whether there are at least l data bits in Slice s.
\n",
+ "fift": "SCHKBITSQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D745",
+ "stack": "s l - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_chk_op_args",
+ "line": 1285,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SCHKBITSQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D746",
+ "tlb": "#D746"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Checks whether there are at least r references in Slice s.
\n",
+ "fift": "SCHKREFSQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D746",
+ "stack": "s r - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_chk_op_args",
+ "line": 1285,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SCHKREFSQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D747",
+ "tlb": "#D747"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Checks whether there are at least l data bits and r references in Slice s.
\n",
+ "fift": "SCHKBITREFSQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D747",
+ "stack": "s l r - ?"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_chk_op_args2",
+ "line": 1301,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SCHKBITREFSQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D748",
+ "tlb": "#D748"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns the n-th cell reference of Slice s for 0 <= n <= 3.
\n",
+ "fift": "PLDREFVAR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D748",
+ "stack": "s n - c"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref",
+ "line": 1000,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDREFVAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D749",
+ "tlb": "#D749"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns the number of data bits in Slice s.
\n",
+ "fift": "SBITS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D749",
+ "stack": "s - l"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_bits_refs",
+ "line": 1318,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SBITS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D74A",
+ "tlb": "#D74A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns the number of references in Slice s.
\n",
+ "fift": "SREFS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D74A",
+ "stack": "s - r"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_bits_refs",
+ "line": 1318,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SREFS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D74B",
+ "tlb": "#D74B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns both the number of data bits and the number of references in s.
\n",
+ "fift": "SBITREFS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D74B",
+ "stack": "s - l r"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_bits_refs",
+ "line": 1318,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SBITREFS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 3,
+ "min_value": 0,
+ "name": "n",
+ "size": 2,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D74E_",
+ "tlb": "#D74E_ n:uint2"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns the n-th cell reference of Slice s, where 0 <= n <= 3.
\n",
+ "fift": "[n] PLDREFIDX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D74E_n",
+ "stack": "s - c"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDREFIDX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D750",
+ "tlb": "#D750"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Loads a little-endian signed 32-bit integer.
\n",
+ "fift": "LDILE4",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D750",
+ "stack": "s - x s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_fixed",
+ "line": 981,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDILE4",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D751",
+ "tlb": "#D751"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Loads a little-endian unsigned 32-bit integer.
\n",
+ "fift": "LDULE4",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D751",
+ "stack": "s - x s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_fixed",
+ "line": 981,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDULE4",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D752",
+ "tlb": "#D752"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Loads a little-endian signed 64-bit integer.
\n",
+ "fift": "LDILE8",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D752",
+ "stack": "s - x s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_fixed",
+ "line": 981,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDILE8",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D753",
+ "tlb": "#D753"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Loads a little-endian unsigned 64-bit integer.
\n",
+ "fift": "LDULE8",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D753",
+ "stack": "s - x s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_fixed",
+ "line": 981,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDULE8",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D754",
+ "tlb": "#D754"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Preloads a little-endian signed 32-bit integer.
\n",
+ "fift": "PLDILE4",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D754",
+ "stack": "s - x"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDILE4",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D755",
+ "tlb": "#D755"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Preloads a little-endian unsigned 32-bit integer.
\n",
+ "fift": "PLDULE4",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D755",
+ "stack": "s - x"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDULE4",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D756",
+ "tlb": "#D756"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Preloads a little-endian signed 64-bit integer.
\n",
+ "fift": "PLDILE8",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D756",
+ "stack": "s - x"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDILE8",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D757",
+ "tlb": "#D757"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Preloads a little-endian unsigned 64-bit integer.
\n",
+ "fift": "PLDULE8",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D757",
+ "stack": "s - x"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDULE8",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D758",
+ "tlb": "#D758"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Quietly loads a little-endian signed 32-bit integer.
\n",
+ "fift": "LDILE4Q",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D758",
+ "stack": "s - x s' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_fixed",
+ "line": 981,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDILE4Q",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D759",
+ "tlb": "#D759"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Quietly loads a little-endian unsigned 32-bit integer.
\n",
+ "fift": "LDULE4Q",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D759",
+ "stack": "s - x s' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_fixed",
+ "line": 981,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDULE4Q",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D75A",
+ "tlb": "#D75A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Quietly loads a little-endian signed 64-bit integer.
\n",
+ "fift": "LDILE8Q",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D75A",
+ "stack": "s - x s' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_fixed",
+ "line": 981,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDILE8Q",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D75B",
+ "tlb": "#D75B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Quietly loads a little-endian unsigned 64-bit integer.
\n",
+ "fift": "LDULE8Q",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D75B",
+ "stack": "s - x s' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_int_fixed",
+ "line": 981,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDULE8Q",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D75C",
+ "tlb": "#D75C"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Quietly preloads a little-endian signed 32-bit integer.
\n",
+ "fift": "PLDILE4Q",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D75C",
+ "stack": "s - x -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDILE4Q",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D75D",
+ "tlb": "#D75D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Quietly preloads a little-endian unsigned 32-bit integer.
\n",
+ "fift": "PLDULE4Q",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D75D",
+ "stack": "s - x -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDULE4Q",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D75E",
+ "tlb": "#D75E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Quietly preloads a little-endian signed 64-bit integer.
\n",
+ "fift": "PLDILE8Q",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D75E",
+ "stack": "s - x -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDILE8Q",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D75F",
+ "tlb": "#D75F"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Quietly preloads a little-endian unsigned 64-bit integer.
\n",
+ "fift": "PLDULE8Q",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D75F",
+ "stack": "s - x -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_preload_ref_fixed",
+ "line": 988,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "PLDULE8Q",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D760",
+ "tlb": "#D760"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns the count n of leading zero bits in s, and removes these bits from s.
\n",
+ "fift": "LDZEROES",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D760",
+ "stack": "s - n s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_same",
+ "line": 1371,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDZEROES",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D761",
+ "tlb": "#D761"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns the count n of leading one bits in s, and removes these bits from s.
\n",
+ "fift": "LDONES",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D761",
+ "stack": "s - n s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_same",
+ "line": 1371,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDONES",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D762",
+ "tlb": "#D762"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns the count n of leading bits equal to 0 <= x <= 1 in s, and removes these bits from s.
\n",
+ "fift": "LDSAME",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D762",
+ "stack": "s x - n s'"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_load_same",
+ "line": 1371,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "LDSAME",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D764",
+ "tlb": "#D764"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns the depth of Slice s. If s has no references, then x=0; otherwise x is one plus the maximum of depths of cells referred to from s.
\n",
+ "fift": "SDEPTH",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D764",
+ "stack": "s - x"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_slice_depth",
+ "line": 1396,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "SDEPTH",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D765",
+ "tlb": "#D765"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns the depth of Cell c. If c has no references, then x=0; otherwise x is one plus the maximum of depths of cells referred to from c. If c is a Null instead of a Cell, returns zero.
\n",
+ "fift": "CDEPTH",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D765",
+ "stack": "c - x"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_cell_depth",
+ "line": 1388,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "CDEPTH",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D766",
+ "tlb": "#D766"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns level of the cell.
\n",
+ "fift": "CLEVEL",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D766",
+ "stack": "cell - level"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_cell_level",
+ "line": 1404,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "CLEVEL",
+ "since_version": 6,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "cell",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "level",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D767",
+ "tlb": "#D767"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns level mask of the cell.
\n",
+ "fift": "CLEVELMASK",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D767",
+ "stack": "cell - level_mask"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_cell_level_mask",
+ "line": 1412,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "CLEVELMASK",
+ "since_version": 6,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "cell",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "level_mask",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 3,
+ "min_value": 0,
+ "name": "n",
+ "size": 2,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D76A_",
+ "tlb": "#D76A_ i:uint2"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns ith hash of the cell.
\n",
+ "fift": "[i] CHASHI",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D76A_",
+ "stack": "cell - hash"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_cell_hash_i",
+ "line": 1420,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "CHASHI",
+ "since_version": 6,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "cell",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "hash",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 3,
+ "min_value": 0,
+ "name": "n",
+ "size": 2,
+ "type": "uint"
+ }
+ ],
+ "prefix": "D76E_",
+ "tlb": "#D76E_ i:uint2"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns ith depth of the cell.
\n",
+ "fift": "[i] CDEPTHI",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D76E_",
+ "stack": "cell - depth"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_cell_depth_i",
+ "line": 1438,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "CDEPTHI",
+ "since_version": 6,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "cell",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "depth",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D770",
+ "tlb": "#D770"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns ith hash of the cell.
\n",
+ "fift": "CHASHIX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D770",
+ "stack": "cell i - hash"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_cell_hash_i",
+ "line": 1420,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "CHASHIX",
+ "since_version": 6,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "cell",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "hash",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D771",
+ "tlb": "#D771"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cell_parse",
+ "description": "Returns ith depth of the cell.
\n",
+ "fift": "CDEPTHIX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "D771",
+ "stack": "cell i - depth"
+ },
+ "implementation": [
+ {
+ "file": "cellops.cpp",
+ "function_name": "exec_cell_depth_i",
+ "line": 1438,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/cellops.cpp"
+ }
+ ],
+ "mnemonic": "CDEPTHIX",
+ "since_version": 6,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "cell",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "depth",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D8",
+ "tlb": "#D8"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Calls, or executes, continuation c.
\n",
+ "fift": "EXECUTE\nCALLX",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "D8",
+ "stack": "c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_execute",
+ "line": 33,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "EXECUTE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "D9",
+ "tlb": "#D9"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Jumps, or transfers control, to continuation c.\nThe remainder of the previous current continuation cc is discarded.
\n",
+ "fift": "JMPX",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "D9",
+ "stack": "c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_jmpx",
+ "line": 53,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "JMPX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "p",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "r",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "DA",
+ "tlb": "#DA p:uint4 r:uint4"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Calls continuation c with p parameters and expecting r return values\n0 <= p <= 15, 0 <= r <= 15
\n",
+ "fift": "[p] [r] CALLXARGS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "DApr",
+ "stack": "c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_callx_args",
+ "line": 39,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "CALLXARGS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "arg",
+ "type": "simple"
+ }
+ ],
+ "length_var": "p",
+ "name": "args",
+ "type": "array"
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "p",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "DB0",
+ "tlb": "#DB0 p:uint4"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Calls continuation c with 0 <= p <= 15 parameters, expecting an arbitrary number of return values.
\n",
+ "fift": "[p] -1 CALLXARGS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "DB0p",
+ "stack": "c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_callx_args",
+ "line": 39,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "CALLXARGS_VAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "arg",
+ "type": "simple"
+ }
+ ],
+ "length_var": "p",
+ "name": "args",
+ "type": "array"
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "p",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "DB1",
+ "tlb": "#DB1 p:uint4"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Jumps to continuation c, passing only the top 0 <= p <= 15 values from the current stack to it (the remainder of the current stack is discarded).
\n",
+ "fift": "[p] JMPXARGS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "DB1p",
+ "stack": "c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_jmpx_args",
+ "line": 59,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "JMPXARGS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "arg",
+ "type": "simple"
+ }
+ ],
+ "length_var": "p",
+ "name": "args",
+ "type": "array"
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "r",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "DB2",
+ "tlb": "#DB2 r:uint4"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "index": 0,
+ "type": "register"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Returns to c0, with 0 <= r <= 15 return values taken from the current stack.
\n",
+ "fift": "[r] RETARGS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "DB2r",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ret_args",
+ "line": 71,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "RETARGS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "arg",
+ "type": "simple"
+ }
+ ],
+ "length_var": "p",
+ "name": "args",
+ "type": "array"
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "DB30",
+ "tlb": "#DB30"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "index": 0,
+ "type": "register"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Returns to the continuation at c0. The remainder of the current continuation cc is discarded.\nApproximately equivalent to c0 PUSHCTR JMPX.
\n",
+ "fift": "RET\nRETTRUE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "DB30",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ret",
+ "line": 66,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "RET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "DB31",
+ "tlb": "#DB31"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "index": 1,
+ "type": "register"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Returns to the continuation at c1.\nApproximately equivalent to c1 PUSHCTR JMPX.
\n",
+ "fift": "RETALT\nRETFALSE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "DB31",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ret_alt",
+ "line": 77,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "RETALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "DB32",
+ "tlb": "#DB32"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "index": 0,
+ "type": "register"
+ },
+ {
+ "index": 1,
+ "type": "register"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Performs RETTRUE if integer f!=0, or RETFALSE if f=0.
\n",
+ "fift": "BRANCH\nRETBOOL",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "DB32",
+ "stack": "f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ret_bool",
+ "line": 82,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "BRANCH",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "DB34",
+ "tlb": "#DB34"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Call with current continuation, transfers control to c, pushing the old value of cc into c's stack (instead of discarding it or writing it into new c0).
\n",
+ "fift": "CALLCC",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "DB34",
+ "stack": "c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_callcc",
+ "line": 87,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "CALLCC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "DB35",
+ "tlb": "#DB35"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Similar to CALLCC, but the remainder of the current continuation (the old value of cc) is converted into a Slice before pushing it into the stack of c.
\n",
+ "fift": "JMPXDATA",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "DB35",
+ "stack": "c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_jmpx_data",
+ "line": 96,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "JMPXDATA",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "p",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "optional_nargs"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "r",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "DB36",
+ "tlb": "#DB36 p:uint4 r:uint4"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Similar to CALLXARGS, but pushes the old value of cc (along with the top 0 <= p <= 15 values from the original stack) into the stack of newly-invoked continuation c, setting cc.nargs to -1 <= r <= 14.
\n",
+ "fift": "[p] [r] CALLCCARGS",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "DB36pr",
+ "stack": "c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_callcc_args",
+ "line": 103,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "CALLCCARGS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "arg",
+ "type": "simple"
+ }
+ ],
+ "length_var": "p",
+ "name": "args",
+ "type": "array"
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "DB38",
+ "tlb": "#DB38"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Similar to CALLXARGS, but takes -1 <= p,r <= 254 from the stack. The next three operations also take p and r from the stack, both in the range -1...254.
\n",
+ "fift": "CALLXVARARGS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "DB38",
+ "stack": "c p r - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_callx_varargs",
+ "line": 114,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "CALLXVARARGS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "arg",
+ "type": "simple"
+ }
+ ],
+ "length_var": "p",
+ "name": "args",
+ "type": "array"
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ },
+ {
+ "name": "p",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "DB39",
+ "tlb": "#DB39"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Similar to RETARGS.
\n",
+ "fift": "RETVARARGS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "DB39",
+ "stack": "p r - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ret_varargs",
+ "line": 123,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "RETVARARGS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "arg",
+ "type": "simple"
+ }
+ ],
+ "length_var": "p",
+ "name": "args",
+ "type": "array"
+ },
+ {
+ "name": "p",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "DB3A",
+ "tlb": "#DB3A"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Similar to JMPXARGS.
\n",
+ "fift": "JMPXVARARGS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "DB3A",
+ "stack": "c p r - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_jmpx_varargs",
+ "line": 130,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "JMPXVARARGS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "arg",
+ "type": "simple"
+ }
+ ],
+ "length_var": "p",
+ "name": "args",
+ "type": "array"
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ },
+ {
+ "name": "p",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "DB3B",
+ "tlb": "#DB3B"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Similar to CALLCCARGS.
\n",
+ "fift": "CALLCCVARARGS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "DB3B",
+ "stack": "c p r - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_callcc_varargs",
+ "line": 139,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "CALLCCVARARGS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "arg",
+ "type": "simple"
+ }
+ ],
+ "length_var": "p",
+ "name": "args",
+ "type": "array"
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ },
+ {
+ "name": "p",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "continuation"
+ }
+ ],
+ "name": "c",
+ "type": "ref"
+ }
+ ],
+ "prefix": "DB3C",
+ "tlb": "#DB3C c:^Cell"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Equivalent to PUSHREFCONT CALLX.
\n",
+ "fift": "[ref] CALLREF",
+ "fift_examples": [],
+ "gas": "126/51",
+ "opcode": "DB3C",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_do_with_ref",
+ "line": 152,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "CALLREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "continuation"
+ }
+ ],
+ "name": "c",
+ "type": "ref"
+ }
+ ],
+ "prefix": "DB3D",
+ "tlb": "#DB3D c:^Cell"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Equivalent to PUSHREFCONT JMPX.
\n",
+ "fift": "[ref] JMPREF",
+ "fift_examples": [],
+ "gas": "126/51",
+ "opcode": "DB3D",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_if_bit_jmpref",
+ "line": 459,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "JMPREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "continuation"
+ }
+ ],
+ "name": "c",
+ "type": "ref"
+ }
+ ],
+ "prefix": "DB3E",
+ "tlb": "#DB3E c:^Cell"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Equivalent to PUSHREFCONT JMPXDATA.
\n",
+ "fift": "[ref] JMPREFDATA",
+ "fift_examples": [],
+ "gas": "126/51",
+ "opcode": "DB3E",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ret_data",
+ "line": 209,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "JMPREFDATA",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "DB3F",
+ "tlb": "#DB3F"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "index": 0,
+ "type": "register"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Equivalent to c0 PUSHCTR JMPXDATA. In this way, the remainder of the current continuation is converted into a Slice and returned to the caller.
\n",
+ "fift": "RETDATA",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "DB3F",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ret_data",
+ "line": 209,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "RETDATA",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 4095,
+ "min_value": 0,
+ "name": "flags",
+ "size": 12,
+ "type": "uint"
+ }
+ ],
+ "prefix": "DB4",
+ "tlb": "#DB4 flags:(## 12)"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Runs child VM with code code and stack x_1...x_n. Returns the resulting stack x'_1...x'_m and exitcode. Other arguments and return values are enabled by flags.
\nFlags operate similarly to RUNVMX in Fift:
\n\n+1: sets c3 to code. \n+2: pushes an implicit 0 before executing the code. \n+4: takes persistent data c4 from the stack and returns its final value. \n+8: takes the gas limit g_l from the stack and returns the consumed gas g_c. \n+16: takes c7 (smart contract context) from the stack. \n+32: returns the final value of c5 (actions). \n+64: pops the hard gas limit g_m enabled by ACCEPT from the stack. \n+128: enables \"isolated gas consumption\", meaning the child VM maintains a separate set of visited cells and a chksgn counter. \n+256: pops an integer r and ensures exactly r values are returned from the top of the stack:\n\n- If
RUNVM call succeeds and r is set, it returns r elements. If r is not set, it returns all available elements. \n- If
RUNVM is successful but lacks elements on the stack, meaning the stack depth is less than r, it is treated as an exception in the child VM. The exit_code is set to -3, and exit_arg is set to 0, so 0 is returned as the only stack element. \n- If
RUNVM fails with an exception, only one element is returned, exit_arg, which should not be confused with exit_code. \n- In the case of running out of gas,
exit_code is set to -14, and exit_arg contains the amount of gas. \n
\n \n
\nGas cost:
\n\n- 66 gas;
\n- 1 gas for each stack element passed to the child VM (the first 32 elements are free);
\n- 1 gas for each stack element returned from the child VM (the first 32 elements are free).
\n
\n",
+ "fift": "flags RUNVM",
+ "fift_examples": [],
+ "gas": "74",
+ "opcode": "DB4fff",
+ "stack": "x_1 ... x_n n code [r] [c4] [c7] [g_l] [g_m] - x'_1 ... x'_m exitcode [data'] [c4'] [c5] [g_c]"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_execute",
+ "line": 33,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "RUNVM",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "DB50",
+ "tlb": "#DB50"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_basic",
+ "description": "Runs child VM with code code and stack x_1...x_n. Returns the resulting stack x'_1...x'_m and exitcode. Other arguments and return values are enabled by flags.
\nFlags operate similarly to RUNVMX in Fift:
\n\n+1: sets c3 to code. \n+2: pushes an implicit 0 before executing the code. \n+4: takes persistent data c4 from the stack and returns its final value. \n+8: takes the gas limit g_l from the stack and returns the consumed gas g_c. \n+16: takes c7 (smart contract context) from the stack. \n+32: returns the final value of c5 (actions). \n+64: pops the hard gas limit g_m enabled by ACCEPT from the stack. \n+128: enables \"isolated gas consumption\", meaning the child VM maintains a separate set of visited cells and a chksgn counter. \n+256: pops an integer r and ensures exactly r values are returned from the top of the stack:\n\n- If
RUNVM call succeeds and r is set, it returns r elements. If r is not set, it returns all available elements. \n- If
RUNVM is successful but lacks elements on the stack, meaning the stack depth is less than r, it is treated as an exception in the child VM. The exit_code is set to -3, and exit_arg is set to 0, so 0 is returned as the only stack element. \n- If
RUNVM fails with an exception, only one element is returned, exit_arg, which should not be confused with exit_code. \n- In the case of running out of gas,
exit_code is set to -14, and exit_arg contains the amount of gas. \n
\n \n
\nGas cost:
\n\n- 66 gas;
\n- 1 gas for each stack element passed to the child VM (the first 32 elements are free);
\n- 1 gas for each stack element returned from the child VM (the first 32 elements are free).
\n
\n",
+ "fift": "RUNVMX",
+ "fift_examples": [],
+ "gas": "66",
+ "opcode": "DB50",
+ "stack": "x_1 ... x_n n code [r] [c4] [c7] [g_l] [g_m] flags - x'_1 ... x'_m exitcode [data'] [c4'] [c5] [g_c]"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_runvmx",
+ "line": 277,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "RUNVMX",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "DC",
+ "tlb": "#DC"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "index": 0,
+ "type": "register"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Performs a RET, but only if integer f is non-zero. If f is a NaN, throws an integer overflow exception.
\n",
+ "fift": "IFRET\nIFNOT:",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "DC",
+ "stack": "f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ifret",
+ "line": 369,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFRET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "DD",
+ "tlb": "#DD"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "index": 0,
+ "type": "register"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Performs a RET, but only if integer f is zero.
\n",
+ "fift": "IFNOTRET\nIF:",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "DD",
+ "stack": "f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ifnotret",
+ "line": 377,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFNOTRET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "DE",
+ "tlb": "#DE"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Performs EXECUTE for c (i.e., executes c), but only if integer f is non-zero. Otherwise simply discards both values.
\n",
+ "fift": "IF",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ code }> CONT` `IF`.",
+ "fift": "IF:<{ code }> <{ code }>IF"
+ }
+ ],
+ "gas": "18",
+ "opcode": "DE",
+ "stack": "f c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_if",
+ "line": 325,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "DF",
+ "tlb": "#DF"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Executes continuation c, but only if integer f is zero. Otherwise simply discards both values.
\n",
+ "fift": "IFNOT",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ code }> CONT` `IFNOT`.",
+ "fift": "IFNOT:<{ code }> <{ code }>IFNOT"
+ }
+ ],
+ "gas": "18",
+ "opcode": "DF",
+ "stack": "f c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ifnot",
+ "line": 336,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFNOT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E0",
+ "tlb": "#E0"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Jumps to c (similarly to JMPX), but only if f is non-zero.
\n",
+ "fift": "IFJMP",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ code }> CONT` `IFJMP`.",
+ "fift": "IFJMP:<{ code }>"
+ }
+ ],
+ "gas": "18",
+ "opcode": "E0",
+ "stack": "f c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_if_jmp",
+ "line": 347,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFJMP",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E1",
+ "tlb": "#E1"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Jumps to c (similarly to JMPX), but only if f is zero.
\n",
+ "fift": "IFNOTJMP",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ code }> CONT` `IFNOTJMP`.",
+ "fift": "IFNOTJMP:<{ code }>"
+ }
+ ],
+ "gas": "18",
+ "opcode": "E1",
+ "stack": "f c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ifnot_jmp",
+ "line": 358,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFNOTJMP",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E2",
+ "tlb": "#E2"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ },
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c2"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "If integer f is non-zero, executes c, otherwise executes c'. Equivalent to CONDSELCHK EXECUTE.
\n",
+ "fift": "IFELSE",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ code1 }> CONT` `<{ code2 }> CONT` `IFELSE`.",
+ "fift": "IF:<{ code1 }>ELSE<{ code2 }>"
+ }
+ ],
+ "gas": "18",
+ "opcode": "E2",
+ "stack": "f c c' - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_if_else",
+ "line": 385,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFELSE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "continuation"
+ }
+ ],
+ "name": "c",
+ "type": "ref"
+ }
+ ],
+ "prefix": "E300",
+ "tlb": "#E300 c:^Cell"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Equivalent to PUSHREFCONT IF, with the optimization that the cell reference is not actually loaded into a Slice and then converted into an ordinary Continuation if f=0.\nGas consumption of this primitive depends on whether f=0 and whether the reference was loaded before.\nSimilar remarks apply other primitives that accept a continuation as a reference.
\n",
+ "fift": "[ref] IFREF",
+ "fift_examples": [],
+ "gas": "26/126/51",
+ "opcode": "E300",
+ "stack": "f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ifret",
+ "line": 369,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "continuation"
+ }
+ ],
+ "name": "c",
+ "type": "ref"
+ }
+ ],
+ "prefix": "E301",
+ "tlb": "#E301 c:^Cell"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Equivalent to PUSHREFCONT IFNOT.
\n",
+ "fift": "[ref] IFNOTREF",
+ "fift_examples": [],
+ "gas": "26/126/51",
+ "opcode": "E301",
+ "stack": "f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ifnotret",
+ "line": 377,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFNOTREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "continuation"
+ }
+ ],
+ "name": "c",
+ "type": "ref"
+ }
+ ],
+ "prefix": "E302",
+ "tlb": "#E302 c:^Cell"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Equivalent to PUSHREFCONT IFJMP.
\n",
+ "fift": "[ref] IFJMPREF",
+ "fift_examples": [],
+ "gas": "26/126/51",
+ "opcode": "E302",
+ "stack": "f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_if_bit_jmpref",
+ "line": 459,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFJMPREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "continuation"
+ }
+ ],
+ "name": "c",
+ "type": "ref"
+ }
+ ],
+ "prefix": "E303",
+ "tlb": "#E303 c:^Cell"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Equivalent to PUSHREFCONT IFNOTJMP.
\n",
+ "fift": "[ref] IFNOTJMPREF",
+ "fift_examples": [],
+ "gas": "26/126/51",
+ "opcode": "E303",
+ "stack": "f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_condsel",
+ "line": 398,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFNOTJMPREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E304",
+ "tlb": "#E304"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "If integer f is non-zero, returns x, otherwise returns y. Notice that no type checks are performed on x and y; as such, it is more like a conditional stack operation. Roughly equivalent to ROT ISZERO INC ROLLX NIP.
\n",
+ "fift": "CONDSEL",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "E304",
+ "stack": "f x y - x or y"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_condsel",
+ "line": 398,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "CONDSEL",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "y",
+ "type": "simple"
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E305",
+ "tlb": "#E305"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Same as CONDSEL, but first checks whether x and y have the same type.
\n",
+ "fift": "CONDSELCHK",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "E305",
+ "stack": "f x y - x or y"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_condsel_chk",
+ "line": 408,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "CONDSELCHK",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "y",
+ "type": "simple"
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E308",
+ "tlb": "#E308"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "index": 1,
+ "type": "register"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Performs RETALT if integer f!=0.
\n",
+ "fift": "IFRETALT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "E308",
+ "stack": "f -"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ifretalt",
+ "line": 421,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFRETALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E309",
+ "tlb": "#E309"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "index": 1,
+ "type": "register"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Performs RETALT if integer f=0.
\n",
+ "fift": "IFNOTRETALT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "E309",
+ "stack": "f -"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ifnotretalt",
+ "line": 429,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFNOTRETALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "continuation"
+ }
+ ],
+ "name": "c",
+ "type": "ref"
+ }
+ ],
+ "prefix": "E30D",
+ "tlb": "#E30D c:^Cell"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ },
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c2"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Equivalent to PUSHREFCONT SWAP IFELSE, with the optimization that the cell reference is not actually loaded into a Slice and then converted into an ordinary Continuation if f=0. Similar remarks apply to the next two primitives: cells are converted into continuations only when necessary.
\n",
+ "fift": "[ref] IFREFELSE",
+ "fift_examples": [],
+ "gas": "26/126/51",
+ "opcode": "E30D",
+ "stack": "f c -"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ifref_elseref",
+ "line": 193,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFREFELSE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "continuation"
+ }
+ ],
+ "name": "c",
+ "type": "ref"
+ }
+ ],
+ "prefix": "E30E",
+ "tlb": "#E30E c:^Cell"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ },
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c2"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Equivalent to PUSHREFCONT IFELSE.
\n",
+ "fift": "[ref] IFELSEREF",
+ "fift_examples": [],
+ "gas": "26/126/51",
+ "opcode": "E30E",
+ "stack": "f c -"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ifelse_ref",
+ "line": 174,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFELSEREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "continuation"
+ }
+ ],
+ "name": "c1",
+ "type": "ref"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "continuation"
+ }
+ ],
+ "name": "c2",
+ "type": "ref"
+ }
+ ],
+ "prefix": "E30F",
+ "tlb": "#E30F c1:^Cell c2:^Cell"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c1"
+ },
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c2"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Equivalent to PUSHREFCONT PUSHREFCONT IFELSE.
\n",
+ "fift": "[ref] [ref] IFREFELSEREF",
+ "fift_examples": [],
+ "gas": "126/51",
+ "opcode": "E30F",
+ "stack": "f -"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_ifref_elseref",
+ "line": 193,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFREFELSEREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 31,
+ "min_value": 0,
+ "name": "n",
+ "size": 5,
+ "type": "uint"
+ }
+ ],
+ "prefix": "E39_",
+ "tlb": "#E39_ n:uint5"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Checks whether bit 0 <= n <= 31 is set in integer x, and if so, performs JMPX to continuation c. Value x is left in the stack.
\n",
+ "fift": "[n] IFBITJMP",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "E39_n",
+ "stack": "x c - x"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_if_bit_jmp",
+ "line": 437,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFBITJMP",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 31,
+ "min_value": 0,
+ "name": "n",
+ "size": 5,
+ "type": "uint"
+ }
+ ],
+ "prefix": "E3B_",
+ "tlb": "#E3B_ n:uint5"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Jumps to c if bit 0 <= n <= 31 is not set in integer x.
\n",
+ "fift": "[n] IFNBITJMP",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "E3B_n",
+ "stack": "x c - x"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_if_bit_jmp",
+ "line": 437,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFNBITJMP",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 31,
+ "min_value": 0,
+ "name": "n",
+ "size": 5,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "continuation"
+ }
+ ],
+ "name": "c",
+ "type": "ref"
+ }
+ ],
+ "prefix": "E3D_",
+ "tlb": "#E3D_ n:uint5 c:^Cell"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Performs a JMPREF if bit 0 <= n <= 31 is set in integer x.
\n",
+ "fift": "[ref] [n] IFBITJMPREF",
+ "fift_examples": [],
+ "gas": "126/51",
+ "opcode": "E3D_n",
+ "stack": "x - x"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_if_bit_jmpref",
+ "line": 459,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFBITJMPREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 31,
+ "min_value": 0,
+ "name": "n",
+ "size": 5,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "continuation"
+ }
+ ],
+ "name": "c",
+ "type": "ref"
+ }
+ ],
+ "prefix": "E3F_",
+ "tlb": "#E3F_ n:uint5 c:^Cell"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_conditional",
+ "description": "Performs a JMPREF if bit 0 <= n <= 31 is not set in integer x.
\n",
+ "fift": "[ref] [n] IFNBITJMPREF",
+ "fift_examples": [],
+ "gas": "126/51",
+ "opcode": "E3F_n",
+ "stack": "x - x"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_if_bit_jmpref",
+ "line": 459,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "IFNBITJMPREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E4",
+ "tlb": "#E4"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "args": {
+ "after": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ },
+ "body": {
+ "type": "variable",
+ "var_name": "c"
+ },
+ "count": "n"
+ },
+ "name": "repeat",
+ "type": "special"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Executes continuation c n times, if integer n is non-negative. If n>=2^31 or n<-2^31, generates a range check exception.\nNotice that a RET inside the code of c works as a continue, not as a break. One should use either alternative (experimental) loops or alternative RETALT (along with a SETEXITALT before the loop) to break out of a loop.
\n",
+ "fift": "REPEAT",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ code }> CONT` `REPEAT`.",
+ "fift": "REPEAT:<{ code }> <{ code }>REPEAT"
+ }
+ ],
+ "gas": "18",
+ "opcode": "E4",
+ "stack": "n c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_repeat",
+ "line": 489,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "REPEAT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E5",
+ "tlb": "#E5"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "args": {
+ "after": {
+ "index": 0,
+ "type": "register"
+ },
+ "body": {
+ "type": "cc"
+ },
+ "count": "n"
+ },
+ "name": "repeat",
+ "type": "special"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Similar to REPEAT, but it is applied to the current continuation cc.
\n",
+ "fift": "REPEATEND\nREPEAT:",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "E5",
+ "stack": "n - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_repeat_end",
+ "line": 501,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "REPEATEND",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E6",
+ "tlb": "#E6"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "args": {
+ "after": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ },
+ "body": {
+ "type": "variable",
+ "var_name": "c"
+ }
+ },
+ "name": "until",
+ "type": "special"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Executes continuation c, then pops an integer x from the resulting stack. If x is zero, performs another iteration of this loop. The actual implementation of this primitive involves an extraordinary continuation ec_until with its arguments set to the body of the loop (continuation c) and the original current continuation cc. This extraordinary continuation is then saved into the savelist of c as c.c0 and the modified c is then executed. The other loop primitives are implemented similarly with the aid of suitable extraordinary continuations.
\n",
+ "fift": "UNTIL",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ code }> CONT` `UNTIL`.",
+ "fift": "UNTIL:<{ code }> <{ code }>UNTIL"
+ }
+ ],
+ "gas": "18",
+ "opcode": "E6",
+ "stack": "c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_until",
+ "line": 513,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "UNTIL",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E7",
+ "tlb": "#E7"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "args": {
+ "after": {
+ "index": 0,
+ "type": "register"
+ },
+ "body": {
+ "type": "cc"
+ }
+ },
+ "name": "until",
+ "type": "special"
+ }
+ },
+ "type": "cc"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Similar to UNTIL, but executes the current continuation cc in a loop. When the loop exit condition is satisfied, performs a RET.
\n",
+ "fift": "UNTILEND\nUNTIL:",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "E7",
+ "stack": "-"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_until_end",
+ "line": 520,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "UNTILEND",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E8",
+ "tlb": "#E8"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "args": {
+ "after": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ },
+ "body": {
+ "type": "variable",
+ "var_name": "c"
+ },
+ "cond": {
+ "type": "variable",
+ "var_name": "c2"
+ }
+ },
+ "name": "while",
+ "type": "special"
+ }
+ },
+ "type": "variable",
+ "var_name": "c2"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Executes c' and pops an integer x from the resulting stack. If x is zero, exists the loop and transfers control to the original cc. If x is non-zero, executes c, and then begins a new iteration.
\n",
+ "fift": "WHILE",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ cond }> CONT` `<{ code }> CONT` `WHILE`.",
+ "fift": "WHILE:<{ cond }>DO<{ code }>"
+ }
+ ],
+ "gas": "18",
+ "opcode": "E8",
+ "stack": "c' c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_while",
+ "line": 526,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "WHILE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E9",
+ "tlb": "#E9"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "args": {
+ "after": {
+ "index": 0,
+ "type": "register"
+ },
+ "body": {
+ "type": "cc"
+ },
+ "cond": {
+ "type": "variable",
+ "var_name": "c2"
+ }
+ },
+ "name": "while",
+ "type": "special"
+ }
+ },
+ "type": "variable",
+ "var_name": "c2"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Similar to WHILE, but uses the current continuation cc as the loop body.
\n",
+ "fift": "WHILEEND",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "E9",
+ "stack": "c' - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_while_end",
+ "line": 535,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "WHILEEND",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EA",
+ "tlb": "#EA"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "args": {
+ "body": {
+ "type": "variable",
+ "var_name": "c"
+ }
+ },
+ "name": "again",
+ "type": "special"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Similar to REPEAT, but executes c infinitely many times. A RET only begins a new iteration of the infinite loop, which can be exited only by an exception, or a RETALT (or an explicit JMPX).
\n",
+ "fift": "AGAIN",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ code }> CONT` `AGAIN`.",
+ "fift": "AGAIN:<{ code }> <{ code }>AGAIN"
+ }
+ ],
+ "gas": "18",
+ "opcode": "EA",
+ "stack": "c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_again",
+ "line": 542,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "AGAIN",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EB",
+ "tlb": "#EB"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "args": {
+ "body": {
+ "type": "cc"
+ }
+ },
+ "name": "again",
+ "type": "special"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Similar to AGAIN, but performed with respect to the current continuation cc.
\n",
+ "fift": "AGAINEND\nAGAIN:",
+ "fift_examples": [],
+ "gas": "18",
+ "opcode": "EB",
+ "stack": "-"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_again_end",
+ "line": 550,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "AGAINEND",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E314",
+ "tlb": "#E314"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "args": {
+ "after": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ },
+ "c1": {
+ "index": 1,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ },
+ "body": {
+ "save": {
+ "c1": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ },
+ "c1": {
+ "index": 1,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ },
+ "count": "n"
+ },
+ "name": "repeat",
+ "type": "special"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Similar to REPEAT, but also sets c1 to the original cc after saving the old value of c1 into the savelist of the original cc. In this way RETALT could be used to break out of the loop body.
\n",
+ "fift": "REPEATBRK",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ code }> CONT` `REPEATBRK`.",
+ "fift": "REPEATBRK:<{ code }> <{ code }>REPEATBRK"
+ }
+ ],
+ "gas": "26",
+ "opcode": "E314",
+ "stack": "n c -"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_repeat",
+ "line": 489,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "REPEATBRK",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E315",
+ "tlb": "#E315"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "args": {
+ "after": {
+ "index": 0,
+ "type": "register"
+ },
+ "body": {
+ "save": {
+ "c1": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ },
+ "count": "n"
+ },
+ "name": "repeat",
+ "type": "special"
+ }
+ ],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Similar to REPEATEND, but also sets c1 to the original c0 after saving the old value of c1 into the savelist of the original c0. Equivalent to SAMEALTSAVE REPEATEND.
\n",
+ "fift": "REPEATENDBRK",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "E315",
+ "stack": "n -"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_repeat_end",
+ "line": 501,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "REPEATENDBRK",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E316",
+ "tlb": "#E316"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "args": {
+ "after": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ },
+ "c1": {
+ "index": 1,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ },
+ "body": {
+ "save": {
+ "c1": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ },
+ "c1": {
+ "index": 1,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ },
+ "name": "until",
+ "type": "special"
+ },
+ "c1": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ },
+ "c1": {
+ "index": 1,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Similar to UNTIL, but also modifies c1 in the same way as REPEATBRK.
\n",
+ "fift": "UNTILBRK",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ code }> CONT` `UNTILBRK`.",
+ "fift": "UNTILBRK:<{ code }>"
+ }
+ ],
+ "gas": "26",
+ "opcode": "E316",
+ "stack": "c -"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_until",
+ "line": 513,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "UNTILBRK",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E317",
+ "tlb": "#E317"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "args": {
+ "after": {
+ "index": 0,
+ "type": "register"
+ },
+ "body": {
+ "save": {
+ "c1": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "name": "until",
+ "type": "special"
+ },
+ "c1": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Equivalent to SAMEALTSAVE UNTILEND.
\n",
+ "fift": "UNTILENDBRK\nUNTILBRK:",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "E317",
+ "stack": "-"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_until_end",
+ "line": 520,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "UNTILENDBRK",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E318",
+ "tlb": "#E318"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "args": {
+ "after": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ },
+ "c1": {
+ "index": 1,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ },
+ "body": {
+ "type": "variable",
+ "var_name": "c"
+ },
+ "cond": {
+ "type": "variable",
+ "var_name": "c2"
+ }
+ },
+ "name": "while",
+ "type": "special"
+ }
+ },
+ "type": "variable",
+ "var_name": "c2"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Similar to WHILE, but also modifies c1 in the same way as REPEATBRK.
\n",
+ "fift": "WHILEBRK",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ cond }> CONT` `<{ code }> CONT` `WHILEBRK`.",
+ "fift": "WHILEBRK:<{ cond }>DO<{ code }>"
+ }
+ ],
+ "gas": "26",
+ "opcode": "E318",
+ "stack": "c' c -"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_while",
+ "line": 526,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "WHILEBRK",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E319",
+ "tlb": "#E319"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Equivalent to SAMEALTSAVE WHILEEND.
\n",
+ "fift": "WHILEENDBRK",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "E319",
+ "stack": "c -"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_while_end",
+ "line": 535,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "WHILEENDBRK",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E31A",
+ "tlb": "#E31A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Similar to AGAIN, but also modifies c1 in the same way as REPEATBRK.
\n",
+ "fift": "AGAINBRK",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ code }> CONT` `AGAINBRK`.",
+ "fift": "AGAINBRK:<{ code }>"
+ }
+ ],
+ "gas": "26",
+ "opcode": "E31A",
+ "stack": "c -"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_again",
+ "line": 542,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "AGAINBRK",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "E31B",
+ "tlb": "#E31B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_loops",
+ "description": "Equivalent to SAMEALTSAVE AGAINEND.
\n",
+ "fift": "AGAINENDBRK\nAGAINBRK:",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "E31B",
+ "stack": "-"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_again_end",
+ "line": 550,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "AGAINENDBRK",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "r",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "optional_nargs"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "n",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "EC",
+ "tlb": "#EC r:uint4 n:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_stack",
+ "description": "Pushes 0 <= r <= 15 values x_1...x_r into the stack of (a copy of) the continuation c, starting with x_1. When n is 15 (-1 in Fift notation), does nothing with c.nargs. For 0 <= n <= 14, sets c.nargs to the final size of the stack of c' plus n. In other words, transforms c into a closure or a partially applied function, with 0 <= n <= 14 arguments missing.
\n",
+ "fift": "[r] [n] SETCONTARGS",
+ "fift_examples": [],
+ "gas": "26+s''",
+ "opcode": "ECrn",
+ "stack": "x_1 x_2...x_r c - c'"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_setcontargs",
+ "line": 665,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SETCONTARGS_N",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ],
+ "length_var": "r",
+ "name": "args",
+ "type": "array"
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "p",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "ED0",
+ "tlb": "#ED0 p:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_stack",
+ "description": "Leaves only the top 0 <= p <= 15 values in the current stack (somewhat similarly to ONLYTOPX), with all the unused bottom values not discarded, but saved into continuation c0 in the same way as SETCONTARGS does.
\n",
+ "fift": "[p] RETURNARGS",
+ "fift_examples": [],
+ "gas": "26+s''",
+ "opcode": "ED0p",
+ "stack": "-"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_return_args",
+ "line": 722,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "RETURNARGS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "ED10",
+ "tlb": "#ED10"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_stack",
+ "description": "Similar to RETURNARGS, but with Integer 0 <= p <= 255 taken from the stack.
\n",
+ "fift": "RETURNVARARGS",
+ "fift_examples": [],
+ "gas": "26+s''",
+ "opcode": "ED10",
+ "stack": "p -"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_return_varargs",
+ "line": 728,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "RETURNVARARGS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "ED11",
+ "tlb": "#ED11"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_stack",
+ "description": "Similar to SETCONTARGS, but with 0 <= r <= 255 and -1 <= n <= 255 taken from the stack.
\n",
+ "fift": "SETCONTVARARGS",
+ "fift_examples": [],
+ "gas": "26+s''",
+ "opcode": "ED11",
+ "stack": "x_1 x_2...x_r c r n - c'"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_setcont_varargs",
+ "line": 678,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SETCONTVARARGS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ],
+ "length_var": "r",
+ "name": "args",
+ "type": "array"
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "ED12",
+ "tlb": "#ED12"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_stack",
+ "description": "-1 <= n <= 255\nIf n=-1, this operation does nothing (c'=c).\nOtherwise its action is similar to [n] SETNUMARGS, but with n taken from the stack.
\n",
+ "fift": "SETNUMVARARGS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "ED12",
+ "stack": "c n - c'"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_setnum_varargs",
+ "line": 687,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SETNUMVARARGS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "ED1E",
+ "tlb": "#ED1E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_create",
+ "description": "Transforms a Slice s into a simple ordinary continuation c, with c.code=s and an empty stack and savelist.
\n",
+ "fift": "BLESS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "ED1E",
+ "stack": "s - c"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_bless",
+ "line": 733,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "BLESS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "ED1F",
+ "tlb": "#ED1F"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_create",
+ "description": "Equivalent to ROT BLESS ROTREV SETCONTVARARGS.
\n",
+ "fift": "BLESSVARARGS",
+ "fift_examples": [],
+ "gas": "26+s''",
+ "opcode": "ED1F",
+ "stack": "x_1...x_r s r n - c"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_bless_varargs",
+ "line": 750,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "BLESSVARARGS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ],
+ "length_var": "r",
+ "name": "args",
+ "type": "array"
+ },
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "r",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [
+ {
+ "type": "optional_nargs"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "n",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "EE",
+ "tlb": "#EE r:uint4 n:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_create",
+ "description": "0 <= r <= 15, -1 <= n <= 14\nEquivalent to BLESS [r] [n] SETCONTARGS.\nThe value of n is represented inside the instruction by the 4-bit integer n mod 16.
\n",
+ "fift": "[r] [n] BLESSARGS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EErn",
+ "stack": "x_1...x_r s - c"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_bless_args",
+ "line": 759,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "BLESSARGS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ],
+ "length_var": "r",
+ "name": "args",
+ "type": "array"
+ },
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "register"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "ED4",
+ "tlb": "#ED4 i:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Pushes the current value of control register c(i). If the control register is not supported in the current codepage, or if it does not have a value, an exception is triggered.
\n",
+ "fift": "c[i] PUSHCTR\nc[i] PUSH",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "ED4i",
+ "stack": "- x"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_push_ctr",
+ "line": 765,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "PUSHCTR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "type": "variable",
+ "var_name": "i"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "register"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "ED5",
+ "tlb": "#ED5 i:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Pops a value x from the stack and stores it into control register c(i), if supported in the current codepage. Notice that if a control register accepts only values of a specific type, a type-checking exception may occur.
\n",
+ "fift": "c[i] POPCTR\nc[i] POP",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "ED5i",
+ "stack": "x - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_pop_ctr",
+ "line": 794,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "POPCTR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "type": "variable",
+ "var_name": "i"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "register"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "ED6",
+ "tlb": "#ED6 i:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Stores x into the savelist of continuation c as c(i), and returns the resulting continuation c'. Almost all operations with continuations may be expressed in terms of SETCONTCTR, POPCTR, and PUSHCTR.
\n",
+ "fift": "c[i] SETCONT\nc[i] SETCONTCTR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "ED6i",
+ "stack": "x c - c'"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_setcont_ctr",
+ "line": 807,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SETCONTCTR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "register"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "ED7",
+ "tlb": "#ED7 i:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Equivalent to c0 PUSHCTR c[i] SETCONTCTR c0 POPCTR.
\n",
+ "fift": "c[i] SETRETCTR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "ED7i",
+ "stack": "x - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_setret_ctr",
+ "line": 818,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SETRETCTR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 0,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 0,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "register"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "ED8",
+ "tlb": "#ED8 i:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Equivalent to c1 PUSHCTR c[i] SETCONTCTR c1 POPCTR.
\n",
+ "fift": "c[i] SETALTCTR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "ED8i",
+ "stack": "x - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_setalt_ctr",
+ "line": 827,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SETALTCTR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "register"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "ED9",
+ "tlb": "#ED9 i:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Similar to c[i] POPCTR, but also saves the old value of c[i] into continuation c0.\nEquivalent (up to exceptions) to c[i] SAVECTR c[i] POPCTR.
\n",
+ "fift": "c[i] POPSAVE\nc[i] POPCTRSAVE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "ED9i",
+ "stack": "x -"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_popsave_ctr",
+ "line": 836,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "POPSAVE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "type": "variable",
+ "var_name": "i"
+ },
+ {
+ "index": 0,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 0,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "register"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "EDA",
+ "tlb": "#EDA i:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Saves the current value of c(i) into the savelist of continuation c0. If an entry for c[i] is already present in the savelist of c0, nothing is done. Equivalent to c[i] PUSHCTR c[i] SETRETCTR.
\n",
+ "fift": "c[i] SAVE\nc[i] SAVECTR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDAi",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_savealt_ctr",
+ "line": 873,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SAVE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "type": "variable",
+ "var_name": "i"
+ },
+ {
+ "index": 0,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 0,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "register"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "EDB",
+ "tlb": "#EDB i:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Similar to c[i] SAVE, but saves the current value of c[i] into the savelist of c1, not c0.
\n",
+ "fift": "c[i] SAVEALT\nc[i] SAVEALTCTR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDBi",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_samealt",
+ "line": 862,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SAVEALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "type": "variable",
+ "var_name": "i"
+ },
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "register"
+ }
+ ],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "EDC",
+ "tlb": "#EDC i:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Equivalent to c[i] SAVE c[i] SAVEALT.
\n",
+ "fift": "c[i] SAVEBOTH\nc[i] SAVEBOTHCTR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDCi",
+ "stack": ""
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_saveboth_ctr",
+ "line": 882,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SAVEBOTH",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "type": "variable",
+ "var_name": "i"
+ },
+ {
+ "index": 0,
+ "type": "constant"
+ },
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 0,
+ "type": "constant"
+ },
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDE0",
+ "tlb": "#EDE0"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Similar to c[i] PUSHCTR, but with i, 0 <= i <= 255, taken from the stack.\nNotice that this primitive is one of the few ''exotic'' primitives, which are not polymorphic like stack manipulation primitives, and at the same time do not have well-defined types of parameters and return values, because the type of x depends on i.
\n",
+ "fift": "PUSHCTRX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDE0",
+ "stack": "i - x"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_push_ctr_var",
+ "line": 894,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "PUSHCTRX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "type": "variable",
+ "var_name": "i"
+ }
+ ],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDE1",
+ "tlb": "#EDE1"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Similar to c[i] POPCTR, but with 0 <= i <= 255 from the stack.
\n",
+ "fift": "POPCTRX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDE1",
+ "stack": "x i - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_pop_ctr_var",
+ "line": 904,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "POPCTRX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "type": "variable",
+ "var_name": "i"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDE2",
+ "tlb": "#EDE2"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Similar to c[i] SETCONTCTR, but with 0 <= i <= 255 from the stack.
\n",
+ "fift": "SETCONTCTRX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDE2",
+ "stack": "x c i - c'"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_setcont_ctr_var",
+ "line": 914,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SETCONTCTRX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "mask",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "EDE3",
+ "tlb": "#EDE3 mask:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Takes continuation, performs the equivalent of c[i] PUSHCTR SWAP c[i] SETCONTCNR for each i that is set in mask (mask is in 0..255).
\n",
+ "fift": "SETCONTCTRMANY\nSETCONTMANY",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "EDE3mm",
+ "stack": "c - c'"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_setcont_ctr_many",
+ "line": 926,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SETCONTCTRMANY",
+ "since_version": 9,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDE4",
+ "tlb": "#EDE4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Takes continuation, performs the equivalent of c[i] PUSHCTR SWAP c[i] SETCONTCNR for each i that is set in mask (mask is in 0..255).
\n",
+ "fift": "SETCONTCTRMANYX\nSETCONTMANYX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDE4",
+ "stack": "c mask - c'"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_setcont_ctr_many_var",
+ "line": 943,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SETCONTCTRMANYX",
+ "since_version": 9,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ },
+ {
+ "name": "mask",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDF0",
+ "tlb": "#EDF0"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Computes the composition compose0(c, c'), which has the meaning of ''perform c, and, if successful, perform c''' (if c is a boolean circuit) or simply ''perform c, then c'''. Equivalent to SWAP c0 SETCONT.
\n",
+ "fift": "COMPOS\nBOOLAND",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDF0",
+ "stack": "c c' - c''"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_compos",
+ "line": 961,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "COMPOS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c3",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDF1",
+ "tlb": "#EDF1"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Computes the alternative composition compose1(c, c'), which has the meaning of ''perform c, and, if not successful, perform c''' (if c is a boolean circuit). Equivalent to SWAP c1 SETCONT.
\n",
+ "fift": "COMPOSALT\nBOOLOR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDF1",
+ "stack": "c c' - c''"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_compos",
+ "line": 961,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "COMPOSALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c3",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDF2",
+ "tlb": "#EDF2"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Computes composition compose1(compose0(c, c'), c'), which has the meaning of ''compute boolean circuit c, then compute c', regardless of the result of c''.
\n",
+ "fift": "COMPOSBOTH",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDF2",
+ "stack": "c c' - c''"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_compos",
+ "line": 961,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "COMPOSBOTH",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c3",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDF3",
+ "tlb": "#EDF3"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Sets c0 to compose0(c, c0). In other words, c will be executed before exiting current subroutine.
\n",
+ "fift": "ATEXIT",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ code }> CONT` `ATEXIT`.",
+ "fift": "ATEXIT:<{ code }> <{ code }>ATEXIT"
+ }
+ ],
+ "gas": "26",
+ "opcode": "EDF3",
+ "stack": "c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_atexit",
+ "line": 983,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "ATEXIT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 0,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 0,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDF4",
+ "tlb": "#EDF4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Sets c1 to compose1(c, c1). In other words, c will be executed before exiting current subroutine by its alternative return path.
\n",
+ "fift": "ATEXITALT",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ code }> CONT` `ATEXITALT`.",
+ "fift": "ATEXITALT:<{ code }> <{ code }>ATEXITALT"
+ }
+ ],
+ "gas": "26",
+ "opcode": "EDF4",
+ "stack": "c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_atexit_alt",
+ "line": 992,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "ATEXITALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDF5",
+ "tlb": "#EDF5"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Sets c1 to compose1(compose0(c, c0), c1),\nIn this way, a subsequent RETALT will first execute c, then transfer control to the original c0. This can be used, for instance, to exit from nested loops.
\n",
+ "fift": "SETEXITALT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDF5",
+ "stack": "c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_setexit_alt",
+ "line": 1001,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SETEXITALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 0,
+ "type": "constant"
+ },
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDF6",
+ "tlb": "#EDF6"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Computes compose0(c, c0).
\n",
+ "fift": "THENRET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDF6",
+ "stack": "c - c'"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_thenret",
+ "line": 1011,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THENRET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 0,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDF7",
+ "tlb": "#EDF7"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Computes compose0(c, c1)
\n",
+ "fift": "THENRETALT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDF7",
+ "stack": "c - c'"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_thenret_alt",
+ "line": 1020,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THENRETALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDF8",
+ "tlb": "#EDF8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Interchanges c0 and c1.
\n",
+ "fift": "INVERT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDF8",
+ "stack": "-"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_invert",
+ "line": 1029,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "INVERT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 0,
+ "type": "constant"
+ },
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 0,
+ "type": "constant"
+ },
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDF9",
+ "tlb": "#EDF9"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "args": {
+ "next": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ },
+ "c1": {
+ "index": 1,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ },
+ "value": -1
+ },
+ "name": "pushint",
+ "type": "special"
+ },
+ "c1": {
+ "args": {
+ "next": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ },
+ "c1": {
+ "index": 1,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ },
+ "value": 0
+ },
+ "name": "pushint",
+ "type": "special"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Performs cc:=compose1(compose0(c, compose0(-1 PUSHINT, cc)), compose0(0 PUSHINT, cc)). If c represents a boolean circuit, the net effect is to evaluate it and push either -1 or 0 into the stack before continuing.
\n",
+ "fift": "BOOLEVAL",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDF9",
+ "stack": "c - ?"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_booleval",
+ "line": 1037,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "BOOLEVAL",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDFA",
+ "tlb": "#EDFA"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Sets c1 to c0. Equivalent to c0 PUSHCTR c1 POPCTR.
\n",
+ "fift": "SAMEALT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDFA",
+ "stack": "-"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_samealt",
+ "line": 862,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SAMEALT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 0,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "EDFB",
+ "tlb": "#EDFB"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_registers",
+ "description": "Sets c1 to c0, but first saves the old value of c1 into the savelist of c0.\nEquivalent to c1 SAVE SAMEALT.
\n",
+ "fift": "SAMEALTSAVE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "EDFB",
+ "stack": "-"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_samealt",
+ "line": 862,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SAMEALTSAVE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 0,
+ "type": "constant"
+ },
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 0,
+ "type": "constant"
+ },
+ {
+ "index": 1,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "n",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F0",
+ "tlb": "#F0 n:uint8"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "index": 3,
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "register"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_dict",
+ "description": "Calls the continuation in c3, pushing integer 0 <= nn <= 255 into its stack as an argument.\nApproximately equivalent to [nn] PUSHINT c3 PUSHCTR EXECUTE.
\n",
+ "fift": "[nn] CALL\n[nn] CALLDICT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F0nn",
+ "stack": "- nn"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_calldict_short",
+ "line": 1092,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "CALLDICT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 16383,
+ "min_value": 0,
+ "name": "n",
+ "size": 14,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F12_",
+ "tlb": "#F12_ n:uint14"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "index": 3,
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "register"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_dict",
+ "description": "For 0 <= n < 2^14, an encoding of [n] CALL for larger values of n.
\n",
+ "fift": "[n] CALL\n[n] CALLDICT",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "F12_n",
+ "stack": "- n"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_calldict",
+ "line": 1099,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "CALLDICT_LONG",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 16383,
+ "min_value": 0,
+ "name": "n",
+ "size": 14,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F16_",
+ "tlb": "#F16_ n:uint14"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "index": 3,
+ "type": "register"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "cont_dict",
+ "description": "Jumps to the continuation in c3, pushing integer 0 <= n < 2^14 as its argument.\nApproximately equivalent to n PUSHINT c3 PUSHCTR JMPX.
\n",
+ "fift": "[n] JMP",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "F16_n",
+ "stack": " - n"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_jmpdict",
+ "line": 1106,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "JMPDICT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 16383,
+ "min_value": 0,
+ "name": "n",
+ "size": 14,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F1A_",
+ "tlb": "#F1A_ n:uint14"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "cont_dict",
+ "description": "Equivalent to n PUSHINT c3 PUSHCTR, for 0 <= n < 2^14.\nIn this way, [n] CALL is approximately equivalent to [n] PREPARE EXECUTE, and [n] JMP is approximately equivalent to [n] PREPARE JMPX.\nOne might use, for instance, CALLXARGS or CALLCC instead of EXECUTE here.
\n",
+ "fift": "[n] PREPARE\n[n] PREPAREDICT",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "F1A_n",
+ "stack": " - n c"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_preparedict",
+ "line": 1113,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "PREPAREDICT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 3,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 63,
+ "min_value": 0,
+ "name": "n",
+ "size": 6,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F22_",
+ "tlb": "#F22_ n:uint6"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "Throws exception 0 <= n <= 63 with parameter zero.\nIn other words, it transfers control to the continuation in c2, pushing 0 and n into its stack, and discarding the old stack altogether.
\n",
+ "fift": "[n] THROW",
+ "fift_examples": [],
+ "gas": "76",
+ "opcode": "F22_n",
+ "stack": " - 0 n"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_throw_fixed",
+ "line": 1130,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THROW_SHORT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 63,
+ "min_value": 0,
+ "name": "n",
+ "size": 6,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F26_",
+ "tlb": "#F26_ n:uint6"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "Throws exception 0 <= n <= 63 with parameter zero only if integer f!=0.
\n",
+ "fift": "[n] THROWIF",
+ "fift_examples": [],
+ "gas": "26/76",
+ "opcode": "F26_n",
+ "stack": "f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_throw_fixed",
+ "line": 1130,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THROWIF_SHORT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 63,
+ "min_value": 0,
+ "name": "n",
+ "size": 6,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F2A_",
+ "tlb": "#F2A_ n:uint6"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "Throws exception 0 <= n <= 63 with parameter zero only if integer f=0.
\n",
+ "fift": "[n] THROWIFNOT",
+ "fift_examples": [],
+ "gas": "26/76",
+ "opcode": "F2A_n",
+ "stack": "f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_throw_fixed",
+ "line": 1130,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THROWIFNOT_SHORT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 2047,
+ "min_value": 0,
+ "name": "n",
+ "size": 11,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F2C4_",
+ "tlb": "#F2C4_ n:uint11"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "For 0 <= n < 2^11, an encoding of [n] THROW for larger values of n.
\n",
+ "fift": "[n] THROW",
+ "fift_examples": [],
+ "gas": "84",
+ "opcode": "F2C4_n",
+ "stack": "- 0 nn"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_throw_fixed",
+ "line": 1130,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THROW",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 2047,
+ "min_value": 0,
+ "name": "n",
+ "size": 11,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F2CC_",
+ "tlb": "#F2CC_ n:uint11"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "Throws exception 0 <= n < 2^11 with parameter x, by copying x and n into the stack of c2 and transferring control to c2.
\n",
+ "fift": "[n] THROWARG",
+ "fift_examples": [],
+ "gas": "84",
+ "opcode": "F2CC_n",
+ "stack": "x - x nn"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_throw_arg_fixed",
+ "line": 1140,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THROWARG",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 2047,
+ "min_value": 0,
+ "name": "n",
+ "size": 11,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F2D4_",
+ "tlb": "#F2D4_ n:uint11"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "For 0 <= n < 2^11, an encoding of [n] THROWIF for larger values of n.
\n",
+ "fift": "[n] THROWIF",
+ "fift_examples": [],
+ "gas": "34/84",
+ "opcode": "F2D4_n",
+ "stack": "f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_throw_fixed",
+ "line": 1130,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THROWIF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 2047,
+ "min_value": 0,
+ "name": "n",
+ "size": 11,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F2DC_",
+ "tlb": "#F2DC_ n:uint11"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "Throws exception 0 <= nn < 2^11 with parameter x only if integer f!=0.
\n",
+ "fift": "[n] THROWARGIF",
+ "fift_examples": [],
+ "gas": "34/84",
+ "opcode": "F2DC_n",
+ "stack": "x f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_throw_arg_fixed",
+ "line": 1140,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THROWARGIF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 2047,
+ "min_value": 0,
+ "name": "n",
+ "size": 11,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F2E4_",
+ "tlb": "#F2E4_ n:uint11"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "For 0 <= n < 2^11, an encoding of [n] THROWIFNOT for larger values of n.
\n",
+ "fift": "[n] THROWIFNOT",
+ "fift_examples": [],
+ "gas": "34/84",
+ "opcode": "F2E4_n",
+ "stack": "f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_throw_fixed",
+ "line": 1130,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THROWIFNOT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 2047,
+ "min_value": 0,
+ "name": "n",
+ "size": 11,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F2EC_",
+ "tlb": "#F2EC_ n:uint11"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "Throws exception 0 <= n < 2^11 with parameter x only if integer f=0.
\n",
+ "fift": "[n] THROWARGIFNOT",
+ "fift_examples": [],
+ "gas": "34/84",
+ "opcode": "F2EC_n",
+ "stack": "x f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_throw_arg_fixed",
+ "line": 1140,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THROWARGIFNOT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F2F0",
+ "tlb": "#F2F0"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "Throws exception 0 <= n < 2^16 with parameter zero.\nApproximately equivalent to ZERO SWAP THROWARGANY.
\n",
+ "fift": "THROWANY",
+ "fift_examples": [],
+ "gas": "76",
+ "opcode": "F2F0",
+ "stack": "n - 0 n"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_throw_any",
+ "line": 1153,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THROWANY",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F2F1",
+ "tlb": "#F2F1"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "Throws exception 0 <= n < 2^16 with parameter x, transferring control to the continuation in c2.\nApproximately equivalent to c2 PUSHCTR 2 JMPXARGS.
\n",
+ "fift": "THROWARGANY",
+ "fift_examples": [],
+ "gas": "76",
+ "opcode": "F2F1",
+ "stack": "x n - x n"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_throw_any",
+ "line": 1153,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THROWARGANY",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F2F2",
+ "tlb": "#F2F2"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "Throws exception 0 <= n < 2^16 with parameter zero only if f!=0.
\n",
+ "fift": "THROWANYIF",
+ "fift_examples": [],
+ "gas": "26/76",
+ "opcode": "F2F2",
+ "stack": "n f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_throw_any",
+ "line": 1153,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THROWANYIF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F2F3",
+ "tlb": "#F2F3"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "Throws exception 0 <= n<2^16 with parameter x only if f!=0.
\n",
+ "fift": "THROWARGANYIF",
+ "fift_examples": [],
+ "gas": "26/76",
+ "opcode": "F2F3",
+ "stack": "x n f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_throw_any",
+ "line": 1153,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THROWARGANYIF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F2F4",
+ "tlb": "#F2F4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "Throws exception 0 <= n<2^16 with parameter zero only if f=0.
\n",
+ "fift": "THROWANYIFNOT",
+ "fift_examples": [],
+ "gas": "26/76",
+ "opcode": "F2F4",
+ "stack": "n f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_throw_any",
+ "line": 1153,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THROWANYIFNOT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F2F5",
+ "tlb": "#F2F5"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "Throws exception 0 <= n<2^16 with parameter x only if f=0.
\n",
+ "fift": "THROWARGANYIFNOT",
+ "fift_examples": [],
+ "gas": "26/76",
+ "opcode": "F2F5",
+ "stack": "x n f - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_throw_any",
+ "line": 1153,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "THROWARGANYIFNOT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F2FF",
+ "tlb": "#F2FF"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ },
+ "c1": {
+ "index": 1,
+ "type": "register"
+ },
+ "c2": {
+ "index": 2,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ },
+ "c2": {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ },
+ "c1": {
+ "index": 1,
+ "type": "register"
+ },
+ "c2": {
+ "index": 2,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ },
+ "c2": {
+ "index": 2,
+ "type": "register"
+ }
+ },
+ "type": "variable",
+ "var_name": "c2"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "Sets c2 to c', first saving the old value of c2 both into the savelist of c' and into the savelist of the current continuation, which is stored into c.c0 and c'.c0. Then runs c similarly to EXECUTE. If c does not throw any exceptions, the original value of c2 is automatically restored on return from c. If an exception occurs, the execution is transferred to c', but the original value of c2 is restored in the process, so that c' can re-throw the exception by THROWANY if it cannot handle it by itself.
\n",
+ "fift": "TRY",
+ "fift_examples": [
+ {
+ "description": "Equivalent to `<{ code1 }> CONT` `<{ code2 }> CONT` `TRY`.",
+ "fift": "TRY:<{ code1 }>CATCH<{ code2 }>"
+ }
+ ],
+ "gas": "26",
+ "opcode": "F2FF",
+ "stack": "c c' - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_try",
+ "line": 1186,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "TRY",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "p",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "r",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F3",
+ "tlb": "#F3 p:uint4 r:uint4"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ },
+ "c1": {
+ "index": 1,
+ "type": "register"
+ },
+ "c2": {
+ "index": 2,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ },
+ "c2": {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ },
+ "c1": {
+ "index": 1,
+ "type": "register"
+ },
+ "c2": {
+ "index": 2,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ },
+ "c2": {
+ "index": 2,
+ "type": "register"
+ }
+ },
+ "type": "variable",
+ "var_name": "c2"
+ }
+ },
+ "type": "variable",
+ "var_name": "c"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "exceptions",
+ "description": "Similar to TRY, but with [p] [r] CALLXARGS internally used instead of EXECUTE.\nIn this way, all but the top 0 <= p <= 15 stack elements will be saved into current continuation's stack, and then restored upon return from either c or c', with the top 0 <= r <= 15 values of the resulting stack of c or c' copied as return values.
\n",
+ "fift": "[p] [r] TRYARGS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F3pr",
+ "stack": "c c' - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_try",
+ "line": 1186,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "TRYARGS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "arg",
+ "type": "simple"
+ }
+ ],
+ "length_var": "r",
+ "name": "args",
+ "type": "array"
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Continuation"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F400",
+ "tlb": "#F400"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_serial",
+ "description": "Stores dictionary D into Builder b, returning the resulting Builder b'.\nIn other words, if D is a cell, performs STONE and STREF; if D is Null, performs NIP and STZERO; otherwise throws a type checking exception.
\n",
+ "fift": "STDICT\nSTOPTREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F400",
+ "stack": "D b - b'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_store_dict",
+ "line": 53,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "STDICT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F401",
+ "tlb": "#F401"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_serial",
+ "description": "Equivalent to LDDICT NIP.
\n",
+ "fift": "SKIPDICT\nSKIPOPTREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F401",
+ "stack": "s - s'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_skip_dict",
+ "line": 82,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "SKIPDICT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F402",
+ "tlb": "#F402"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_serial",
+ "description": "Loads (parses) a (Slice-represented) dictionary s' from Slice s, and returns the remainder of s as s''.\nThis is a ''split function'' for all HashmapE(n,X) dictionary types.
\n",
+ "fift": "LDDICTS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F402",
+ "stack": "s - s' s''"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_load_dict_slice",
+ "line": 121,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "LDDICTS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F403",
+ "tlb": "#F403"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_serial",
+ "description": "Preloads a (Slice-represented) dictionary s' from Slice s.\nApproximately equivalent to LDDICTS DROP.
\n",
+ "fift": "PLDDICTS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F403",
+ "stack": "s - s'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_load_dict_slice",
+ "line": 121,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "PLDDICTS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F404",
+ "tlb": "#F404"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_serial",
+ "description": "Loads (parses) a dictionary D from Slice s, and returns the remainder of s as s'. May be applied to dictionaries or to values of arbitrary (^Y)? types.
\n",
+ "fift": "LDDICT\nLDOPTREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F404",
+ "stack": "s - D s'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_load_dict",
+ "line": 148,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "LDDICT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F405",
+ "tlb": "#F405"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_serial",
+ "description": "Preloads a dictionary D from Slice s.\nApproximately equivalent to LDDICT DROP.
\n",
+ "fift": "PLDDICT\nPLDOPTREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F405",
+ "stack": "s - D"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_load_dict",
+ "line": 148,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "PLDDICT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F406",
+ "tlb": "#F406"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_serial",
+ "description": "A quiet version of LDDICT.
\n",
+ "fift": "LDDICTQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F406",
+ "stack": "s - D s' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_load_dict",
+ "line": 148,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "LDDICTQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F407",
+ "tlb": "#F407"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_serial",
+ "description": "A quiet version of PLDDICT.
\n",
+ "fift": "PLDDICTQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F407",
+ "stack": "s - D -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_load_dict",
+ "line": 148,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "PLDDICTQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F40A",
+ "tlb": "#F40A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_get",
+ "description": "Looks up key k (represented by a Slice, the first 0 <= n <= 1023 data bits of which are used as a key) in dictionary D of type HashmapE(n,X) with n-bit keys.\nOn success, returns the value found as a Slice x.
\n",
+ "fift": "DICTGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F40A",
+ "stack": "k D n - x -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get",
+ "line": 207,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F40B",
+ "tlb": "#F40B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_get",
+ "description": "Similar to DICTGET, but with a LDREF ENDS applied to x on success.\nThis operation is useful for dictionaries of type HashmapE(n,^Y).
\n",
+ "fift": "DICTGETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F40B",
+ "stack": "k D n - c -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get_optref",
+ "line": 247,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTGETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F40C",
+ "tlb": "#F40C"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_get",
+ "description": "Similar to DICTGET, but with a signed (big-endian) n-bit Integer i as a key. If i does not fit into n bits, returns 0. If i is a NaN, throws an integer overflow exception.
\n",
+ "fift": "DICTIGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F40C",
+ "stack": "i D n - x -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get",
+ "line": 207,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F40D",
+ "tlb": "#F40D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_get",
+ "description": "Combines DICTIGET with DICTGETREF: it uses signed n-bit Integer i as a key and returns a Cell instead of a Slice on success.
\n",
+ "fift": "DICTIGETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F40D",
+ "stack": "i D n - c -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get_optref",
+ "line": 247,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIGETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F40E",
+ "tlb": "#F40E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_get",
+ "description": "Similar to DICTIGET, but with unsigned (big-endian) n-bit Integer i used as a key.
\n",
+ "fift": "DICTUGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F40E",
+ "stack": "i D n - x -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get",
+ "line": 207,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F40F",
+ "tlb": "#F40F"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_get",
+ "description": "Similar to DICTIGETREF, but with an unsigned n-bit Integer key i.
\n",
+ "fift": "DICTUGETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F40F",
+ "stack": "i D n - c -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get_optref",
+ "line": 247,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUGETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F412",
+ "tlb": "#F412"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "Sets the value associated with n-bit key k (represented by a Slice as in DICTGET) in dictionary D (also represented by a Slice) to value x (again a Slice), and returns the resulting dictionary as D'.
\n",
+ "fift": "DICTSET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F412",
+ "stack": "x k D n - D'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTSET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F413",
+ "tlb": "#F413"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "Similar to DICTSET, but with the value set to a reference to Cell c.
\n",
+ "fift": "DICTSETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F413",
+ "stack": "c k D n - D'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTSETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F414",
+ "tlb": "#F414"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "Similar to DICTSET, but with the key represented by a (big-endian) signed n-bit integer i. If i does not fit into n bits, a range check exception is generated.
\n",
+ "fift": "DICTISET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F414",
+ "stack": "x i D n - D'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTISET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F415",
+ "tlb": "#F415"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "Similar to DICTSETREF, but with the key a signed n-bit integer as in DICTISET.
\n",
+ "fift": "DICTISETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F415",
+ "stack": "c i D n - D'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTISETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F416",
+ "tlb": "#F416"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "Similar to DICTISET, but with i an unsigned n-bit integer.
\n",
+ "fift": "DICTUSET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F416",
+ "stack": "x i D n - D'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUSET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F417",
+ "tlb": "#F417"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "Similar to DICTISETREF, but with i unsigned.
\n",
+ "fift": "DICTUSETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F417",
+ "stack": "c i D n - D'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUSETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F41A",
+ "tlb": "#F41A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "Combines DICTSET with DICTGET: it sets the value corresponding to key k to x, but also returns the old value y associated with the key in question, if present.
\n",
+ "fift": "DICTSETGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F41A",
+ "stack": "x k D n - D' y -1 or D' 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTSETGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F41B",
+ "tlb": "#F41B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "Combines DICTSETREF with DICTGETREF similarly to DICTSETGET.
\n",
+ "fift": "DICTSETGETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F41B",
+ "stack": "c k D n - D' c' -1 or D' 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTSETGETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F41C",
+ "tlb": "#F41C"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTISETGET, but with i a signed n-bit integer.
\n",
+ "fift": "DICTISETGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F41C",
+ "stack": "x i D n - D' y -1 or D' 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTISETGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F41D",
+ "tlb": "#F41D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTISETGETREF, but with i a signed n-bit integer.
\n",
+ "fift": "DICTISETGETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F41D",
+ "stack": "c i D n - D' c' -1 or D' 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTISETGETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F41E",
+ "tlb": "#F41E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTISETGET, but with i an unsigned n-bit integer.
\n",
+ "fift": "DICTUSETGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F41E",
+ "stack": "x i D n - D' y -1 or D' 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUSETGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F41F",
+ "tlb": "#F41F"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTISETGETREF, but with i an unsigned n-bit integer.
\n",
+ "fift": "DICTUSETGETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F41F",
+ "stack": "c i D n - D' c' -1 or D' 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUSETGETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F422",
+ "tlb": "#F422"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "A Replace operation, which is similar to DICTSET, but sets the value of key k in dictionary D to x only if the key k was already present in D.
\n",
+ "fift": "DICTREPLACE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F422",
+ "stack": "x k D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTREPLACE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F423",
+ "tlb": "#F423"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "A Replace counterpart of DICTSETREF.
\n",
+ "fift": "DICTREPLACEREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F423",
+ "stack": "c k D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTREPLACEREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F424",
+ "tlb": "#F424"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTREPLACE, but with i a signed n-bit integer.
\n",
+ "fift": "DICTIREPLACE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F424",
+ "stack": "x i D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIREPLACE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F425",
+ "tlb": "#F425"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTREPLACEREF, but with i a signed n-bit integer.
\n",
+ "fift": "DICTIREPLACEREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F425",
+ "stack": "c i D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIREPLACEREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F426",
+ "tlb": "#F426"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTREPLACE, but with i an unsigned n-bit integer.
\n",
+ "fift": "DICTUREPLACE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F426",
+ "stack": "x i D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUREPLACE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F427",
+ "tlb": "#F427"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTREPLACEREF, but with i an unsigned n-bit integer.
\n",
+ "fift": "DICTUREPLACEREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F427",
+ "stack": "c i D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUREPLACEREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F42A",
+ "tlb": "#F42A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "A Replace counterpart of DICTSETGET: on success, also returns the old value associated with the key in question.
\n",
+ "fift": "DICTREPLACEGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F42A",
+ "stack": "x k D n - D' y -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTREPLACEGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F42B",
+ "tlb": "#F42B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "A Replace counterpart of DICTSETGETREF.
\n",
+ "fift": "DICTREPLACEGETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F42B",
+ "stack": "c k D n - D' c' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTREPLACEGETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F42C",
+ "tlb": "#F42C"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTREPLACEGET, but with i a signed n-bit integer.
\n",
+ "fift": "DICTIREPLACEGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F42C",
+ "stack": "x i D n - D' y -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIREPLACEGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F42D",
+ "tlb": "#F42D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTREPLACEGETREF, but with i a signed n-bit integer.
\n",
+ "fift": "DICTIREPLACEGETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F42D",
+ "stack": "c i D n - D' c' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIREPLACEGETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F42E",
+ "tlb": "#F42E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTREPLACEGET, but with i an unsigned n-bit integer.
\n",
+ "fift": "DICTUREPLACEGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F42E",
+ "stack": "x i D n - D' y -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUREPLACEGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F42F",
+ "tlb": "#F42F"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTREPLACEGETREF, but with i an unsigned n-bit integer.
\n",
+ "fift": "DICTUREPLACEGETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F42F",
+ "stack": "c i D n - D' c' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUREPLACEGETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F432",
+ "tlb": "#F432"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "An Add counterpart of DICTSET: sets the value associated with key k in dictionary D to x, but only if it is not already present in D.
\n",
+ "fift": "DICTADD",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F432",
+ "stack": "x k D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTADD",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F433",
+ "tlb": "#F433"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "An Add counterpart of DICTSETREF.
\n",
+ "fift": "DICTADDREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F433",
+ "stack": "c k D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTADDREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F434",
+ "tlb": "#F434"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTADD, but with i a signed n-bit integer.
\n",
+ "fift": "DICTIADD",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F434",
+ "stack": "x i D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIADD",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F435",
+ "tlb": "#F435"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTADDREF, but with i a signed n-bit integer.
\n",
+ "fift": "DICTIADDREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F435",
+ "stack": "c i D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIADDREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F436",
+ "tlb": "#F436"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTADD, but with i an unsigned n-bit integer.
\n",
+ "fift": "DICTUADD",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F436",
+ "stack": "x i D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUADD",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F437",
+ "tlb": "#F437"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTADDREF, but with i an unsigned n-bit integer.
\n",
+ "fift": "DICTUADDREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F437",
+ "stack": "c i D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUADDREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F43A",
+ "tlb": "#F43A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "An Add counterpart of DICTSETGET: sets the value associated with key k in dictionary D to x, but only if key k is not already present in D. Otherwise, just returns the old value y without changing the dictionary.
\n",
+ "fift": "DICTADDGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F43A",
+ "stack": "x k D n - D' -1 or D y 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTADDGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F43B",
+ "tlb": "#F43B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "An Add counterpart of DICTSETGETREF.
\n",
+ "fift": "DICTADDGETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F43B",
+ "stack": "c k D n - D' -1 or D c' 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTADDGETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F43C",
+ "tlb": "#F43C"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTADDGET, but with i a signed n-bit integer.
\n",
+ "fift": "DICTIADDGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F43C",
+ "stack": "x i D n - D' -1 or D y 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIADDGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F43D",
+ "tlb": "#F43D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTADDGETREF, but with i a signed n-bit integer.
\n",
+ "fift": "DICTIADDGETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F43D",
+ "stack": "c i D n - D' -1 or D c' 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIADDGETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F43E",
+ "tlb": "#F43E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTADDGET, but with i an unsigned n-bit integer.
\n",
+ "fift": "DICTUADDGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F43E",
+ "stack": "x i D n - D' -1 or D y 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUADDGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F43F",
+ "tlb": "#F43F"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set",
+ "description": "DICTADDGETREF, but with i an unsigned n-bit integer.
\n",
+ "fift": "DICTUADDGETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F43F",
+ "stack": "c i D n - D' -1 or D c' 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUADDGETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F441",
+ "tlb": "#F441"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTSETB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F441",
+ "stack": "b k D n - D'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTSETB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F442",
+ "tlb": "#F442"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTISETB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F442",
+ "stack": "b i D n - D'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTISETB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F443",
+ "tlb": "#F443"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTUSETB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F443",
+ "stack": "b i D n - D'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUSETB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F445",
+ "tlb": "#F445"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTSETGETB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F445",
+ "stack": "b k D n - D' y -1 or D' 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_setget",
+ "line": 315,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTSETGETB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F446",
+ "tlb": "#F446"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTISETGETB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F446",
+ "stack": "b i D n - D' y -1 or D' 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_setget",
+ "line": 315,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTISETGETB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F447",
+ "tlb": "#F447"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTUSETGETB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F447",
+ "stack": "b i D n - D' y -1 or D' 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_setget",
+ "line": 315,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUSETGETB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F449",
+ "tlb": "#F449"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTREPLACEB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F449",
+ "stack": "b k D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTREPLACEB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F44A",
+ "tlb": "#F44A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTIREPLACEB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F44A",
+ "stack": "b i D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIREPLACEB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F44B",
+ "tlb": "#F44B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTUREPLACEB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F44B",
+ "stack": "b i D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUREPLACEB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F44D",
+ "tlb": "#F44D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTREPLACEGETB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F44D",
+ "stack": "b k D n - D' y -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_setget",
+ "line": 315,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTREPLACEGETB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F44E",
+ "tlb": "#F44E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTIREPLACEGETB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F44E",
+ "stack": "b i D n - D' y -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_setget",
+ "line": 315,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIREPLACEGETB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F44F",
+ "tlb": "#F44F"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTUREPLACEGETB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F44F",
+ "stack": "b i D n - D' y -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_setget",
+ "line": 315,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUREPLACEGETB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F451",
+ "tlb": "#F451"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTADDB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F451",
+ "stack": "b k D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTADDB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F452",
+ "tlb": "#F452"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTIADDB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F452",
+ "stack": "b i D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIADDB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F453",
+ "tlb": "#F453"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTUADDB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F453",
+ "stack": "b i D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_set",
+ "line": 271,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUADDB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F455",
+ "tlb": "#F455"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTADDGETB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F455",
+ "stack": "b k D n - D' -1 or D y 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_setget",
+ "line": 315,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTADDGETB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F456",
+ "tlb": "#F456"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTIADDGETB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F456",
+ "stack": "b i D n - D' -1 or D y 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_setget",
+ "line": 315,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIADDGETB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F457",
+ "tlb": "#F457"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_set_builder",
+ "description": "",
+ "fift": "DICTUADDGETB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F457",
+ "stack": "b i D n - D' -1 or D y 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_setget",
+ "line": 315,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUADDGETB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F459",
+ "tlb": "#F459"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_delete",
+ "description": "Deletes n-bit key, represented by a Slice k, from dictionary D. If the key is present, returns the modified dictionary D' and the success flag -1. Otherwise, returns the original dictionary D and 0.
\n",
+ "fift": "DICTDEL",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F459",
+ "stack": "k D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_delete",
+ "line": 374,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTDEL",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F45A",
+ "tlb": "#F45A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_delete",
+ "description": "A version of DICTDEL with the key represented by a signed n-bit Integer i. If i does not fit into n bits, simply returns D 0 (''key not found, dictionary unmodified'').
\n",
+ "fift": "DICTIDEL",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F45A",
+ "stack": "i D n - D' ?"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_delete",
+ "line": 374,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIDEL",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F45B",
+ "tlb": "#F45B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_delete",
+ "description": "Similar to DICTIDEL, but with i an unsigned n-bit integer.
\n",
+ "fift": "DICTUDEL",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F45B",
+ "stack": "i D n - D' ?"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_delete",
+ "line": 374,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUDEL",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F462",
+ "tlb": "#F462"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_delete",
+ "description": "Deletes n-bit key, represented by a Slice k, from dictionary D. If the key is present, returns the modified dictionary D', the original value x associated with the key k (represented by a Slice), and the success flag -1. Otherwise, returns the original dictionary D and 0.
\n",
+ "fift": "DICTDELGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F462",
+ "stack": "k D n - D' x -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_deleteget",
+ "line": 401,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTDELGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F463",
+ "tlb": "#F463"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_delete",
+ "description": "Similar to DICTDELGET, but with LDREF ENDS applied to x on success, so that the value returned c is a Cell.
\n",
+ "fift": "DICTDELGETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F463",
+ "stack": "k D n - D' c -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_deleteget",
+ "line": 401,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTDELGETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F464",
+ "tlb": "#F464"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_delete",
+ "description": "DICTDELGET, but with i a signed n-bit integer.
\n",
+ "fift": "DICTIDELGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F464",
+ "stack": "i D n - D' x -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_deleteget",
+ "line": 401,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIDELGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F465",
+ "tlb": "#F465"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_delete",
+ "description": "DICTDELGETREF, but with i a signed n-bit integer.
\n",
+ "fift": "DICTIDELGETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F465",
+ "stack": "i D n - D' c -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_deleteget",
+ "line": 401,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIDELGETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F466",
+ "tlb": "#F466"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_delete",
+ "description": "DICTDELGET, but with i an unsigned n-bit integer.
\n",
+ "fift": "DICTUDELGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F466",
+ "stack": "i D n - D' x -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_deleteget",
+ "line": 401,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUDELGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F467",
+ "tlb": "#F467"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_delete",
+ "description": "DICTDELGETREF, but with i an unsigned n-bit integer.
\n",
+ "fift": "DICTUDELGETREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F467",
+ "stack": "i D n - D' c -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_deleteget",
+ "line": 401,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUDELGETREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F469",
+ "tlb": "#F469"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_mayberef",
+ "description": "A variant of DICTGETREF that returns Null instead of the value c^? if the key k is absent from dictionary D.
\n",
+ "fift": "DICTGETOPTREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F469",
+ "stack": "k D n - c^?"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get_optref",
+ "line": 247,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTGETOPTREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F46A",
+ "tlb": "#F46A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_mayberef",
+ "description": "DICTGETOPTREF, but with i a signed n-bit integer. If the key i is out of range, also returns Null.
\n",
+ "fift": "DICTIGETOPTREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F46A",
+ "stack": "i D n - c^?"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get_optref",
+ "line": 247,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIGETOPTREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F46B",
+ "tlb": "#F46B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_mayberef",
+ "description": "DICTGETOPTREF, but with i an unsigned n-bit integer. If the key i is out of range, also returns Null.
\n",
+ "fift": "DICTUGETOPTREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F46B",
+ "stack": "i D n - c^?"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get_optref",
+ "line": 247,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUGETOPTREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F46D",
+ "tlb": "#F46D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_mayberef",
+ "description": "A variant of both DICTGETOPTREF and DICTSETGETREF that sets the value corresponding to key k in dictionary D to c^? (if c^? is Null, then the key is deleted instead), and returns the old value ~c^? (if the key k was absent before, returns Null instead).
\n",
+ "fift": "DICTSETGETOPTREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F46D",
+ "stack": "c^? k D n - D' ~c^?"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_setget_optref",
+ "line": 442,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTSETGETOPTREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F46E",
+ "tlb": "#F46E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_mayberef",
+ "description": "Similar to primitive DICTSETGETOPTREF, but using signed n-bit Integer i as a key. If i does not fit into n bits, throws a range checking exception.
\n",
+ "fift": "DICTISETGETOPTREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F46E",
+ "stack": "c^? i D n - D' ~c^?"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_setget_optref",
+ "line": 442,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTISETGETOPTREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F46F",
+ "tlb": "#F46F"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_mayberef",
+ "description": "Similar to primitive DICTSETGETOPTREF, but using unsigned n-bit Integer i as a key.
\n",
+ "fift": "DICTUSETGETOPTREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F46F",
+ "stack": "c^? i D n - D' ~c^?"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_setget_optref",
+ "line": 442,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUSETGETOPTREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "c2",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F470",
+ "tlb": "#F470"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_prefix",
+ "description": "",
+ "fift": "PFXDICTSET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F470",
+ "stack": "x k D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_pfx_dict_set",
+ "line": 566,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "PFXDICTSET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F471",
+ "tlb": "#F471"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_prefix",
+ "description": "",
+ "fift": "PFXDICTREPLACE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F471",
+ "stack": "x k D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_pfx_dict_set",
+ "line": 566,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "PFXDICTREPLACE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F472",
+ "tlb": "#F472"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_prefix",
+ "description": "",
+ "fift": "PFXDICTADD",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F472",
+ "stack": "x k D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_pfx_dict_set",
+ "line": 566,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "PFXDICTADD",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F473",
+ "tlb": "#F473"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_prefix",
+ "description": "",
+ "fift": "PFXDICTDEL",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F473",
+ "stack": "k D n - D' -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_pfx_dict_delete",
+ "line": 580,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "PFXDICTDEL",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F474",
+ "tlb": "#F474"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_next",
+ "description": "Computes the minimal key k' in dictionary D that is lexicographically greater than k, and returns k' (represented by a Slice) along with associated value x' (also represented by a Slice).
\n",
+ "fift": "DICTGETNEXT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F474",
+ "stack": "k D n - x' k' -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getnear",
+ "line": 523,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTGETNEXT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F475",
+ "tlb": "#F475"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_next",
+ "description": "Similar to DICTGETNEXT, but computes the minimal key k' that is lexicographically greater than or equal to k.
\n",
+ "fift": "DICTGETNEXTEQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F475",
+ "stack": "k D n - x' k' -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getnear",
+ "line": 523,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTGETNEXTEQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F476",
+ "tlb": "#F476"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_next",
+ "description": "Similar to DICTGETNEXT, but computes the maximal key k' lexicographically smaller than k.
\n",
+ "fift": "DICTGETPREV",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F476",
+ "stack": "k D n - x' k' -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getnear",
+ "line": 523,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTGETPREV",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F477",
+ "tlb": "#F477"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_next",
+ "description": "Similar to DICTGETPREV, but computes the maximal key k' lexicographically smaller than or equal to k.
\n",
+ "fift": "DICTGETPREVEQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F477",
+ "stack": "k D n - x' k' -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getnear",
+ "line": 523,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTGETPREVEQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F478",
+ "tlb": "#F478"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_next",
+ "description": "Similar to DICTGETNEXT, but interprets all keys in dictionary D as big-endian signed n-bit integers, and computes the minimal key i' that is larger than Integer i (which does not necessarily fit into n bits).
\n",
+ "fift": "DICTIGETNEXT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F478",
+ "stack": "i D n - x' i' -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getnear",
+ "line": 523,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIGETNEXT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F479",
+ "tlb": "#F479"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_next",
+ "description": "Similar to DICTGETNEXTEQ, but interprets keys as signed n-bit integers.
\n",
+ "fift": "DICTIGETNEXTEQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F479",
+ "stack": "i D n - x' i' -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getnear",
+ "line": 523,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIGETNEXTEQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F47A",
+ "tlb": "#F47A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_next",
+ "description": "Similar to DICTGETPREV, but interprets keys as signed n-bit integers.
\n",
+ "fift": "DICTIGETPREV",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F47A",
+ "stack": "i D n - x' i' -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getnear",
+ "line": 523,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIGETPREV",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F47B",
+ "tlb": "#F47B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_next",
+ "description": "Similar to DICTGETPREVEQ, but interprets keys as signed n-bit integers.
\n",
+ "fift": "DICTIGETPREVEQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F47B",
+ "stack": "i D n - x' i' -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getnear",
+ "line": 523,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIGETPREVEQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F47C",
+ "tlb": "#F47C"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_next",
+ "description": "Similar to DICTGETNEXT, but interprets all keys in dictionary D as big-endian unsigned n-bit integers, and computes the minimal key i' that is larger than Integer i (which does not necessarily fit into n bits, and is not necessarily non-negative).
\n",
+ "fift": "DICTUGETNEXT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F47C",
+ "stack": "i D n - x' i' -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getnear",
+ "line": 523,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUGETNEXT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F47D",
+ "tlb": "#F47D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_next",
+ "description": "Similar to DICTGETNEXTEQ, but interprets keys as unsigned n-bit integers.
\n",
+ "fift": "DICTUGETNEXTEQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F47D",
+ "stack": "i D n - x' i' -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getnear",
+ "line": 523,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUGETNEXTEQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F47E",
+ "tlb": "#F47E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_next",
+ "description": "Similar to DICTGETPREV, but interprets keys as unsigned n-bit integers.
\n",
+ "fift": "DICTUGETPREV",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F47E",
+ "stack": "i D n - x' i' -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getnear",
+ "line": 523,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUGETPREV",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F47F",
+ "tlb": "#F47F"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_next",
+ "description": "Similar to DICTGETPREVEQ, but interprets keys a unsigned n-bit integers.
\n",
+ "fift": "DICTUGETPREVEQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F47F",
+ "stack": "i D n - x' i' -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getnear",
+ "line": 523,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUGETPREVEQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F482",
+ "tlb": "#F482"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Computes the minimal key k (represented by a Slice with n data bits) in dictionary D, and returns k along with the associated value x.
\n",
+ "fift": "DICTMIN",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F482",
+ "stack": "D n - x k -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTMIN",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F483",
+ "tlb": "#F483"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTMIN, but returns the only reference in the value as a Cell c.
\n",
+ "fift": "DICTMINREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F483",
+ "stack": "D n - c k -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTMINREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F484",
+ "tlb": "#F484"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTMIN, but computes the minimal key i under the assumption that all keys are big-endian signed n-bit integers. Notice that the key and value returned may differ from those computed by DICTMIN and DICTUMIN.
\n",
+ "fift": "DICTIMIN",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F484",
+ "stack": "D n - x i -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIMIN",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F485",
+ "tlb": "#F485"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTIMIN, but returns the only reference in the value.
\n",
+ "fift": "DICTIMINREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F485",
+ "stack": "D n - c i -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIMINREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F486",
+ "tlb": "#F486"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTMIN, but returns the key as an unsigned n-bit Integer i.
\n",
+ "fift": "DICTUMIN",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F486",
+ "stack": "D n - x i -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUMIN",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F487",
+ "tlb": "#F487"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTUMIN, but returns the only reference in the value.
\n",
+ "fift": "DICTUMINREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F487",
+ "stack": "D n - c i -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUMINREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F48A",
+ "tlb": "#F48A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Computes the maximal key k (represented by a Slice with n data bits) in dictionary D, and returns k along with the associated value x.
\n",
+ "fift": "DICTMAX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F48A",
+ "stack": "D n - x k -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTMAX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F48B",
+ "tlb": "#F48B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTMAX, but returns the only reference in the value.
\n",
+ "fift": "DICTMAXREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F48B",
+ "stack": "D n - c k -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTMAXREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F48C",
+ "tlb": "#F48C"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTMAX, but computes the maximal key i under the assumption that all keys are big-endian signed n-bit integers. Notice that the key and value returned may differ from those computed by DICTMAX and DICTUMAX.
\n",
+ "fift": "DICTIMAX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F48C",
+ "stack": "D n - x i -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIMAX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F48D",
+ "tlb": "#F48D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTIMAX, but returns the only reference in the value.
\n",
+ "fift": "DICTIMAXREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F48D",
+ "stack": "D n - c i -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIMAXREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F48E",
+ "tlb": "#F48E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTMAX, but returns the key as an unsigned n-bit Integer i.
\n",
+ "fift": "DICTUMAX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F48E",
+ "stack": "D n - x i -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUMAX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F48F",
+ "tlb": "#F48F"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTUMAX, but returns the only reference in the value.
\n",
+ "fift": "DICTUMAXREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F48F",
+ "stack": "D n - c i -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUMAXREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F492",
+ "tlb": "#F492"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Computes the minimal key k (represented by a Slice with n data bits) in dictionary D, removes k from the dictionary, and returns k along with the associated value x and the modified dictionary D'.
\n",
+ "fift": "DICTREMMIN",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F492",
+ "stack": "D n - D' x k -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTREMMIN",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F493",
+ "tlb": "#F493"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTREMMIN, but returns the only reference in the value as a Cell c.
\n",
+ "fift": "DICTREMMINREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F493",
+ "stack": "D n - D' c k -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTREMMINREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F494",
+ "tlb": "#F494"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTREMMIN, but computes the minimal key i under the assumption that all keys are big-endian signed n-bit integers. Notice that the key and value returned may differ from those computed by DICTREMMIN and DICTUREMMIN.
\n",
+ "fift": "DICTIREMMIN",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F494",
+ "stack": "D n - D' x i -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIREMMIN",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F495",
+ "tlb": "#F495"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTIREMMIN, but returns the only reference in the value.
\n",
+ "fift": "DICTIREMMINREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F495",
+ "stack": "D n - D' c i -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIREMMINREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F496",
+ "tlb": "#F496"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTREMMIN, but returns the key as an unsigned n-bit Integer i.
\n",
+ "fift": "DICTUREMMIN",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F496",
+ "stack": "D n - D' x i -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUREMMIN",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F497",
+ "tlb": "#F497"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTUREMMIN, but returns the only reference in the value.
\n",
+ "fift": "DICTUREMMINREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F497",
+ "stack": "D n - D' c i -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUREMMINREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F49A",
+ "tlb": "#F49A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Computes the maximal key k (represented by a Slice with n data bits) in dictionary D, removes k from the dictionary, and returns k along with the associated value x and the modified dictionary D'.
\n",
+ "fift": "DICTREMMAX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F49A",
+ "stack": "D n - D' x k -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTREMMAX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F49B",
+ "tlb": "#F49B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTREMMAX, but returns the only reference in the value as a Cell c.
\n",
+ "fift": "DICTREMMAXREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F49B",
+ "stack": "D n - D' c k -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTREMMAXREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F49C",
+ "tlb": "#F49C"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTREMMAX, but computes the minimal key i under the assumption that all keys are big-endian signed n-bit integers. Notice that the key and value returned may differ from those computed by DICTREMMAX and DICTUREMMAX.
\n",
+ "fift": "DICTIREMMAX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F49C",
+ "stack": "D n - D' x i -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIREMMAX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F49D",
+ "tlb": "#F49D"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTIREMMAX, but returns the only reference in the value.
\n",
+ "fift": "DICTIREMMAXREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F49D",
+ "stack": "D n - D' c i -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIREMMAXREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F49E",
+ "tlb": "#F49E"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTREMMAX, but returns the key as an unsigned n-bit Integer i.
\n",
+ "fift": "DICTUREMMAX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F49E",
+ "stack": "D n - D' x i -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUREMMAX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F49F",
+ "tlb": "#F49F"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_min",
+ "description": "Similar to DICTUREMMAX, but returns the only reference in the value.
\n",
+ "fift": "DICTUREMMAXREF",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F49F",
+ "stack": "D n - D' c i -1 or D 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_getmin",
+ "line": 470,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUREMMAXREF",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4A0",
+ "tlb": "#F4A0"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "x"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "dict_special",
+ "description": "Similar to DICTIGET, but with x BLESSed into a continuation with a subsequent JMPX to it on success. On failure, does nothing. This is useful for implementing switch/case constructions.
\n",
+ "fift": "DICTIGETJMP",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4A0",
+ "stack": "i D n - "
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get_exec",
+ "line": 593,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIGETJMP",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4A1",
+ "tlb": "#F4A1"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "x"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "dict_special",
+ "description": "Similar to DICTIGETJMP, but performs DICTUGET instead of DICTIGET.
\n",
+ "fift": "DICTUGETJMP",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4A1",
+ "stack": "i D n - "
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get_exec",
+ "line": 593,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUGETJMP",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4A2",
+ "tlb": "#F4A2"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "x"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "dict_special",
+ "description": "Similar to DICTIGETJMP, but with EXECUTE instead of JMPX.
\n",
+ "fift": "DICTIGETEXEC",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4A2",
+ "stack": "i D n - "
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get_exec",
+ "line": 593,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIGETEXEC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4A3",
+ "tlb": "#F4A3"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "x"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "dict_special",
+ "description": "Similar to DICTUGETJMP, but with EXECUTE instead of JMPX.
\n",
+ "fift": "DICTUGETEXEC",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4A3",
+ "stack": "i D n - "
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get_exec",
+ "line": 593,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUGETEXEC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "size_var": "n",
+ "type": "dictionary"
+ }
+ ],
+ "name": "d",
+ "type": "ref"
+ },
+ {
+ "display_hints": [],
+ "max_value": 1023,
+ "min_value": 0,
+ "name": "n",
+ "size": 10,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F4A6_",
+ "tlb": "#F4A6_ d:^Cell n:uint10"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_special",
+ "description": "Pushes a non-empty constant dictionary D (as a Cell^?) along with its key length 0 <= n <= 1023, stored as a part of the instruction. The dictionary itself is created from the first of remaining references of the current continuation. In this way, the complete DICTPUSHCONST instruction can be obtained by first serializing xF4A4_, then the non-empty dictionary itself (one 1 bit and a cell reference), and then the unsigned 10-bit integer n (as if by a STU 10 instruction). An empty dictionary can be pushed by a NEWDICT primitive instead.
\n",
+ "fift": "[ref] [n] DICTPUSHCONST",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "F4A6_n",
+ "stack": " - D n"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_push_const_dict",
+ "line": 620,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTPUSHCONST",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4A8",
+ "tlb": "#F4A8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_special",
+ "description": "Looks up the unique prefix of Slice s present in the prefix code dictionary represented by Cell^? D and 0 <= n <= 1023. If found, the prefix of s is returned as s', and the corresponding value (also a Slice) as x. The remainder of s is returned as a Slice s''. If no prefix of s is a key in prefix code dictionary D, returns the unchanged s and a zero flag to indicate failure.
\n",
+ "fift": "PFXDICTGETQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4A8",
+ "stack": "s D n - s' x s'' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_pfx_dict_get",
+ "line": 658,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "PFXDICTGETQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4A9",
+ "tlb": "#F4A9"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_special",
+ "description": "Similar to PFXDICTGET, but throws a cell deserialization failure exception on failure.
\n",
+ "fift": "PFXDICTGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4A9",
+ "stack": "s D n - s' x s''"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_pfx_dict_get",
+ "line": 658,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "PFXDICTGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4AA",
+ "tlb": "#F4AA"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "x"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "dict_special",
+ "description": "Similar to PFXDICTGETQ, but on success BLESSes the value x into a Continuation and transfers control to it as if by a JMPX. On failure, returns s unchanged and continues execution.
\n",
+ "fift": "PFXDICTGETJMP",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4AA",
+ "stack": "s D n - s' s'' or s"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_pfx_dict_get",
+ "line": 658,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "PFXDICTGETJMP",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4AB",
+ "tlb": "#F4AB"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "x"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "dict_special",
+ "description": "Similar to PFXDICTGETJMP, but EXECutes the continuation found instead of jumping to it. On failure, throws a cell deserialization exception.
\n",
+ "fift": "PFXDICTGETEXEC",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4AB",
+ "stack": "s D n - s' s''"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_pfx_dict_get",
+ "line": 658,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "PFXDICTGETEXEC",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "size_var": "n",
+ "type": "dictionary"
+ }
+ ],
+ "name": "d",
+ "type": "ref"
+ },
+ {
+ "display_hints": [],
+ "max_value": 1023,
+ "min_value": 0,
+ "name": "n",
+ "size": 10,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F4AE_",
+ "tlb": "#F4AE_ d:^Cell n:uint10"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "x"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "dict_special",
+ "description": "Combines [n] DICTPUSHCONST for 0 <= n <= 1023 with PFXDICTGETJMP.
\n",
+ "fift": "[ref] [n] PFXDICTCONSTGETJMP\n[ref] [n] PFXDICTSWITCH",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "F4AE_n",
+ "stack": "s - s' s'' or s"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_const_pfx_dict_switch",
+ "line": 692,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "PFXDICTCONSTGETJMP",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4BC",
+ "tlb": "#F4BC"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "x"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "dict_special",
+ "description": "A variant of DICTIGETJMP that returns index i on failure.
\n",
+ "fift": "DICTIGETJMPZ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4BC",
+ "stack": "i D n - i or nothing"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get_exec",
+ "line": 593,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIGETJMPZ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4BD",
+ "tlb": "#F4BD"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "type": "variable",
+ "var_name": "x"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "dict_special",
+ "description": "A variant of DICTUGETJMP that returns index i on failure.
\n",
+ "fift": "DICTUGETJMPZ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4BD",
+ "stack": "i D n - i or nothing"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get_exec",
+ "line": 593,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUGETJMPZ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4BE",
+ "tlb": "#F4BE"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "x"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "dict_special",
+ "description": "A variant of DICTIGETEXEC that returns index i on failure.
\n",
+ "fift": "DICTIGETEXECZ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4BE",
+ "stack": "i D n - i or nothing"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get_exec",
+ "line": 593,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTIGETEXECZ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4BF",
+ "tlb": "#F4BF"
+ },
+ "control_flow": {
+ "branches": [
+ {
+ "save": {
+ "c0": {
+ "save": {
+ "c0": {
+ "index": 0,
+ "type": "register"
+ }
+ },
+ "type": "cc"
+ }
+ },
+ "type": "variable",
+ "var_name": "x"
+ }
+ ],
+ "nobranch": false
+ },
+ "doc": {
+ "category": "dict_special",
+ "description": "A variant of DICTUGETEXEC that returns index i on failure.
\n",
+ "fift": "DICTUGETEXECZ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4BF",
+ "stack": "i D n - i or nothing"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_dict_get_exec",
+ "line": 593,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "DICTUGETEXECZ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": []
+ },
+ "outputs": {
+ "registers": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4B1",
+ "tlb": "#F4B1"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_sub",
+ "description": "Constructs a subdictionary consisting of all keys beginning with prefix k (represented by a Slice, the first 0 <= l <= n <= 1023 data bits of which are used as a key) of length l in dictionary D of type HashmapE(n,X) with n-bit keys. On success, returns the new subdictionary of the same type HashmapE(n,X) as a Slice D'.
\n",
+ "fift": "SUBDICTGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4B1",
+ "stack": "k l D n - D'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_subdict_get",
+ "line": 722,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "SUBDICTGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4B2",
+ "tlb": "#F4B2"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_sub",
+ "description": "Variant of SUBDICTGET with the prefix represented by a signed big-endian l-bit Integer x, where necessarily l <= 257.
\n",
+ "fift": "SUBDICTIGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4B2",
+ "stack": "x l D n - D'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_subdict_get",
+ "line": 722,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "SUBDICTIGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4B3",
+ "tlb": "#F4B3"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_sub",
+ "description": "Variant of SUBDICTGET with the prefix represented by an unsigned big-endian l-bit Integer x, where necessarily l <= 256.
\n",
+ "fift": "SUBDICTUGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4B3",
+ "stack": "x l D n - D'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_subdict_get",
+ "line": 722,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "SUBDICTUGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4B5",
+ "tlb": "#F4B5"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_sub",
+ "description": "Similar to SUBDICTGET, but removes the common prefix k from all keys of the new dictionary D', which becomes of type HashmapE(n-l,X).
\n",
+ "fift": "SUBDICTRPGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4B5",
+ "stack": "k l D n - D'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_subdict_get",
+ "line": 722,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "SUBDICTRPGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4B6",
+ "tlb": "#F4B6"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_sub",
+ "description": "Variant of SUBDICTRPGET with the prefix represented by a signed big-endian l-bit Integer x, where necessarily l <= 257.
\n",
+ "fift": "SUBDICTIRPGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4B6",
+ "stack": "x l D n - D'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_subdict_get",
+ "line": 722,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "SUBDICTIRPGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F4B7",
+ "tlb": "#F4B7"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "dict_sub",
+ "description": "Variant of SUBDICTRPGET with the prefix represented by an unsigned big-endian l-bit Integer x, where necessarily l <= 256.
\n",
+ "fift": "SUBDICTURPGET",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F4B7",
+ "stack": "x l D n - D'"
+ },
+ "implementation": [
+ {
+ "file": "dictops.cpp",
+ "function_name": "exec_subdict_get",
+ "line": 722,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/dictops.cpp"
+ }
+ ],
+ "mnemonic": "SUBDICTURPGET",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "l",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "D2",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F800",
+ "tlb": "#F800"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_gas",
+ "description": "Sets current gas limit g_l to its maximal allowed value g_m, and resets the gas credit g_c to zero, decreasing the value of g_r by g_c in the process.\nIn other words, the current smart contract agrees to buy some gas to finish the current transaction. This action is required to process external messages, which bring no value (hence no gas) with themselves.
\n",
+ "fift": "ACCEPT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F800",
+ "stack": "-"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_accept",
+ "line": 81,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "ACCEPT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "name": "gas",
+ "type": "special"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [
+ {
+ "name": "gas",
+ "type": "special"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F801",
+ "tlb": "#F801"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_gas",
+ "description": "Sets current gas limit g_l to the minimum of g and g_m, and resets the gas credit g_c to zero. If the gas consumed so far (including the present instruction) exceeds the resulting value of g_l, an (unhandled) out of gas exception is thrown before setting new gas limits. Notice that SETGASLIMIT with an argument g >= 2^63-1 is equivalent to ACCEPT.
\n",
+ "fift": "SETGASLIMIT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F801",
+ "stack": "g - "
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_set_gas_limit",
+ "line": 86,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "SETGASLIMIT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "name": "gas",
+ "type": "special"
+ }
+ ],
+ "stack": [
+ {
+ "name": "g",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "name": "gas",
+ "type": "special"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F807",
+ "tlb": "#F807"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_gas",
+ "description": "Returns gas consumed by VM so far (including this instruction).
\n",
+ "fift": "GASCONSUMED",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F807",
+ "stack": "- g_c"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_gas_consumed",
+ "line": 96,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "GASCONSUMED",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [
+ {
+ "name": "gas",
+ "type": "special"
+ }
+ ],
+ "stack": [
+ {
+ "name": "g_c",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F80F",
+ "tlb": "#F80F"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_gas",
+ "description": "Commits the current state of registers c4 (''persistent data'') and c5 (''actions'') so that the current execution is considered ''successful'' with the saved values even if an exception is thrown later.
\n",
+ "fift": "COMMIT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F80F",
+ "stack": "-"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_commit",
+ "line": 102,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "COMMIT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 4,
+ "type": "constant"
+ },
+ {
+ "index": 5,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [
+ {
+ "name": "cstate",
+ "type": "special"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F810",
+ "tlb": "#F810"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_rnd",
+ "description": "Generates a new pseudo-random unsigned 256-bit Integer x. The algorithm is as follows: if r is the old value of the random seed, considered as a 32-byte array (by constructing the big-endian representation of an unsigned 256-bit integer), then its sha512(r) is computed; the first 32 bytes of this hash are stored as the new value r' of the random seed, and the remaining 32 bytes are returned as the next random value x.
\n",
+ "fift": "RANDU256",
+ "fift_examples": [],
+ "gas": "26+|c7|+|c1_1|",
+ "opcode": "F810",
+ "stack": "- x"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_randu256",
+ "line": 542,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RANDU256",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F811",
+ "tlb": "#F811"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_rnd",
+ "description": "Generates a new pseudo-random integer z in the range 0...y-1 (or y...-1, if y<0). More precisely, an unsigned random value x is generated as in RAND256U; then z:=floor(x*y/2^256) is computed.\nEquivalent to RANDU256 256 MULRSHIFT.
\n",
+ "fift": "RAND",
+ "fift_examples": [],
+ "gas": "26+|c7|+|c1_1|",
+ "opcode": "F811",
+ "stack": "y - z"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_rand_int",
+ "line": 548,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RAND",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F814",
+ "tlb": "#F814"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_rnd",
+ "description": "Sets the random seed to unsigned 256-bit Integer x.
\n",
+ "fift": "SETRAND",
+ "fift_examples": [],
+ "gas": "26+|c7|+|c1_1|",
+ "opcode": "F814",
+ "stack": "x - "
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_set_rand",
+ "line": 561,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "SETRAND",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F815",
+ "tlb": "#F815"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_rnd",
+ "description": "Mixes unsigned 256-bit Integer x into the random seed r by setting the random seed to Sha of the concatenation of two 32-byte strings: the first with the big-endian representation of the old seed r, and the second with the big-endian representation of x.
\n",
+ "fift": "ADDRAND\nRANDOMIZE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F815",
+ "stack": "x - "
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_set_rand",
+ "line": 561,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "ADDRAND",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F82",
+ "tlb": "#F82 i:uint4"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Returns the i-th parameter from the Tuple provided at c7 for 0 <= i <= 15. Equivalent to c7 PUSHCTR FIRST [i] INDEX.\nIf one of these internal operations fails, throws an appropriate type checking or range checking exception.
\n",
+ "fift": "[i] GETPARAM",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F82i",
+ "stack": " - x"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_var_param",
+ "line": 152,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "GETPARAM",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": []
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F830",
+ "tlb": "#F830"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Returns the global configuration dictionary along with its key length (32).\nEquivalent to CONFIGROOT 32 PUSHINT.
\n",
+ "fift": "CONFIGDICT",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F830",
+ "stack": " - D 32"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_config_dict",
+ "line": 182,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "CONFIGDICT",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "type": "const",
+ "value": 32,
+ "value_type": "Integer"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F832",
+ "tlb": "#F832"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Returns the value of the global configuration parameter with integer index i as a Cell c, and a flag to indicate success.\nEquivalent to CONFIGDICT DICTIGETREF.
\n",
+ "fift": "CONFIGPARAM",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F832",
+ "stack": "i - c -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_config_param",
+ "line": 188,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "CONFIGPARAM",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F833",
+ "tlb": "#F833"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Returns the value of the global configuration parameter with integer index i as a Maybe Cell c^?.\nEquivalent to CONFIGDICT DICTIGETOPTREF.
\n",
+ "fift": "CONFIGOPTPARAM",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F833",
+ "stack": "i - c^?"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_config_param",
+ "line": 188,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "CONFIGOPTPARAM",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F83400",
+ "tlb": "#F83400"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Retrives last_mc_blocks part of PrevBlocksInfo from c7 (parameter 13).
\n",
+ "fift": "PREVMCBLOCKS",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "F83400",
+ "stack": "- t"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_prev_blocks_info",
+ "line": 259,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "PREVMCBLOCKS",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F83401",
+ "tlb": "#F83401"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Retrives prev_key_block part of PrevBlocksInfo from c7 (parameter 13).
\n",
+ "fift": "PREVKEYBLOCK",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "F83401",
+ "stack": "- t"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_prev_blocks_info",
+ "line": 259,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "PREVKEYBLOCK",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F83402",
+ "tlb": "#F83402"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Retrives last_mc_blocks_divisible_by_100 part of PrevBlocksInfo from c7 (parameter 13).
\n",
+ "fift": "PREVMCBLOCKS_100",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "F83402",
+ "stack": "- t"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_prev_blocks_info",
+ "line": 259,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "PREVMCBLOCKS_100",
+ "since_version": 9,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F835",
+ "tlb": "#F835"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Retrieves global_id from 19 network config.
\n",
+ "fift": "GLOBALID",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F835",
+ "stack": "- i"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_global_id",
+ "line": 276,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "GLOBALID",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "i",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F836",
+ "tlb": "#F836"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Calculates gas fee
\n",
+ "fift": "GETGASFEE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F836",
+ "stack": "gas_used is_mc - price"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_gas_fee",
+ "line": 306,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "GETGASFEE",
+ "since_version": 6,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "gas_used",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "is_mc",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "price",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F837",
+ "tlb": "#F837"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Calculates storage fees (only current StoragePrices entry is used).
\n",
+ "fift": "GETSTORAGEFEE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F837",
+ "stack": "cells bits seconds is_mc - price"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_storage_fee",
+ "line": 317,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "GETSTORAGEFEE",
+ "since_version": 6,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "cells",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "bits",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "seconds",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "is_mc",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "price",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F838",
+ "tlb": "#F838"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Calculates forward fee.
\n",
+ "fift": "GETFORWARDFEE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F838",
+ "stack": "cells bits is_mc - price"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_forward_fee",
+ "line": 331,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "GETFORWARDFEE",
+ "since_version": 6,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "cells",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "bits",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "is_mc",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "price",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F839",
+ "tlb": "#F839"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Returns gas usage for the current contract if it is precompiled, null otherwise.
\n",
+ "fift": "GETPRECOMPILEDGAS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F839",
+ "stack": "- x"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_precompiled_gas",
+ "line": 343,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "GETPRECOMPILEDGAS",
+ "since_version": 6,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F83A",
+ "tlb": "#F83A"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Calculate (fwd_fee * 2^16) / (2^16 - first_frac). Can be used to get the original fwd_fee of the message.
\n",
+ "fift": "GETORIGINALFWDFEE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F83A",
+ "stack": "fwd_fee is_mc - orig_fwd_fee"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_original_fwd_fee",
+ "line": 350,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "GETORIGINALFWDFEE",
+ "since_version": 6,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "fwd_fee",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "is_mc",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "orig_fwd_fee",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F83B",
+ "tlb": "#F83B"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Same as GETGASFEE, but without flat price (just (gas_used * price) / 2^16).
\n",
+ "fift": "GETGASFEESIMPLE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F83B",
+ "stack": "gas_used is_mc - price"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_gas_fee_simple",
+ "line": 364,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "GETGASFEESIMPLE",
+ "since_version": 6,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "gas_used",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "is_mc",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "price",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F83C",
+ "tlb": "#F83C"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Same as GETFORWARDFEE, but without lump price (just (bits*bit_price + cells*cell_price) / 2^16).
\n",
+ "fift": "GETFORWARDFEESIMPLE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F83C",
+ "stack": "cells bits is_mc - price"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_forward_fee_simple",
+ "line": 375,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "GETFORWARDFEESIMPLE",
+ "since_version": 6,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "cells",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "bits",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "is_mc",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "price",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F840",
+ "tlb": "#F840"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_global",
+ "description": "Returns the k-th global variable for 0 <= k < 255.\nEquivalent to c7 PUSHCTR SWAP INDEXVARQ.
\n",
+ "fift": "GETGLOBVAR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F840",
+ "stack": "k - x"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_global_var",
+ "line": 221,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "GETGLOBVAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 31,
+ "min_value": 1,
+ "name": "k",
+ "size": 5,
+ "type": "uint"
+ }
+ ],
+ "operands_range_check": {
+ "from": 1,
+ "length": 5,
+ "to": 31
+ },
+ "prefix": "F85_",
+ "tlb": "#F85_ k:(## 5) {1 <= k}"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_global",
+ "description": "Returns the k-th global variable for 1 <= k <= 31.\nEquivalent to c7 PUSHCTR [k] INDEXQ.
\n",
+ "fift": "[k] GETGLOB",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F85_k",
+ "stack": " - x"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_global",
+ "line": 215,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "GETGLOB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F860",
+ "tlb": "#F860"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_global",
+ "description": "Assigns x to the k-th global variable for 0 <= k < 255.\nEquivalent to c7 PUSHCTR ROTREV SETINDEXVARQ c7 POPCTR.
\n",
+ "fift": "SETGLOBVAR",
+ "fift_examples": [],
+ "gas": "26+|c7'|",
+ "opcode": "F860",
+ "stack": "x k - "
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_set_global_var",
+ "line": 252,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "SETGLOBVAR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 31,
+ "min_value": 1,
+ "name": "k",
+ "size": 5,
+ "type": "uint"
+ }
+ ],
+ "operands_range_check": {
+ "from": 1,
+ "length": 5,
+ "to": 31
+ },
+ "prefix": "F87_",
+ "tlb": "#F87_ k:(## 5) {1 <= k}"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_global",
+ "description": "Assigns x to the k-th global variable for 1 <= k <= 31.\nEquivalent to c7 PUSHCTR SWAP k SETINDEXQ c7 POPCTR.
\n",
+ "fift": "[k] SETGLOB",
+ "fift_examples": [],
+ "gas": "26+|c7'|",
+ "opcode": "F87_k",
+ "stack": "x - "
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_set_global",
+ "line": 245,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "SETGLOB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple"
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F880",
+ "tlb": "#F880"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_global",
+ "description": "Takes id of the extra currency (integer in range 0..2^32-1), returns the amount of this extra currency on the account balance. The first 5 executions of GETEXTRABALANCE consume at most 26 + 200 gas each. The subsequent executions incur the full gas cost of 26 (normal instruction cost) plus gas for loading cells (up to 3300 if the dictionary has maximum depth).
\n",
+ "fift": "GETEXTRABALANCE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F880",
+ "stack": "id - amount"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_extra_currency_balance",
+ "line": 388,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "GETEXTRABALANCE",
+ "since_version": 10,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "id",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "amount",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 255,
+ "min_value": 0,
+ "name": "i",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F881",
+ "tlb": "#F881 i:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Returns the i-th parameter from the Tuple provided at c7 for 0 <= i <= 255. Equivalent to c7 PUSHCTR FIRST [i] INDEX.\nIf one of these internal operations fails, throws an appropriate type checking or range checking exception.
\n",
+ "fift": "[i] GETPARAMLONG",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "F881ii",
+ "stack": " - x"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_var_param_long",
+ "line": 158,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "GETPARAMLONG",
+ "since_version": 11,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": []
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "prefix": "F89",
+ "tlb": "#F89 i:uint8"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_config",
+ "description": "Equivalent to INMSGPARAMS i INDEX
\n",
+ "fift": "[i] INMSGPARAM",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F89i",
+ "stack": " - x"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_get_var_in_msg_param",
+ "line": 176,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "INMSGPARAM",
+ "since_version": 11,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 7,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": []
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F900",
+ "tlb": "#F900"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Computes the representation hash of a Cell c and returns it as a 256-bit unsigned integer x. Useful for signing and checking signatures of arbitrary entities represented by a tree of cells.
\n",
+ "fift": "HASHCU",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F900",
+ "stack": "c - x"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_compute_hash",
+ "line": 612,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHCU",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F901",
+ "tlb": "#F901"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Computes the hash of a Slice s and returns it as a 256-bit unsigned integer x. The result is the same as if an ordinary cell containing only data and references from s had been created and its hash computed by HASHCU.
\n",
+ "fift": "HASHSU",
+ "fift_examples": [],
+ "gas": "526",
+ "opcode": "F901",
+ "stack": "s - x"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_compute_hash",
+ "line": 612,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHSU",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F902",
+ "tlb": "#F902"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Computes Sha of the data bits of Slice s. If the bit length of s is not divisible by eight, throws a cell underflow exception. The hash value is returned as a 256-bit unsigned integer x.
\n",
+ "fift": "SHA256U",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F902",
+ "stack": "s - x"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_compute_sha256",
+ "line": 634,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "SHA256U",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90400",
+ "tlb": "#F90400"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates and returns hash of the concatenation of slices (or builders) s_1...s_n.
\n",
+ "fift": "HASHEXT_SHA256",
+ "fift_examples": [],
+ "gas": "1/33 gas per byte",
+ "opcode": "F90400",
+ "stack": "s_1 ... s_n n - h"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXT_SHA256",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "h",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90401",
+ "tlb": "#F90401"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates and returns hash of the concatenation of slices (or builders) s_1...s_n.
\n",
+ "fift": "HASHEXT_SHA512",
+ "fift_examples": [],
+ "gas": "1/16 gas per byte",
+ "opcode": "F90401",
+ "stack": "s_1 ... s_n n - h1 h2"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXT_SHA512",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "h1",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "h2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90402",
+ "tlb": "#F90402"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates and returns hash of the concatenation of slices (or builders) s_1...s_n.
\n",
+ "fift": "HASHEXT_BLAKE2B",
+ "fift_examples": [],
+ "gas": "1/19 gas per byte",
+ "opcode": "F90402",
+ "stack": "s_1 ... s_n n - h1 h2"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXT_BLAKE2B",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "h1",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "h2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90403",
+ "tlb": "#F90403"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates and returns hash of the concatenation of slices (or builders) s_1...s_n.
\n",
+ "fift": "HASHEXT_KECCAK256",
+ "fift_examples": [],
+ "gas": "1/11 gas per byte",
+ "opcode": "F90403",
+ "stack": "s_1 ... s_n n - h"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXT_KECCAK256",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "h",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90404",
+ "tlb": "#F90404"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates and returns hash of the concatenation of slices (or builders) s_1...s_n.
\n",
+ "fift": "HASHEXT_KECCAK512",
+ "fift_examples": [],
+ "gas": "1/19 gas per byte",
+ "opcode": "F90404",
+ "stack": "s_1 ... s_n n - h1 h2"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXT_KECCAK512",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "h1",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "h2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90500",
+ "tlb": "#F90500"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates and returns hash of the concatenation of slices (or builders) s_1...s_n.
\n",
+ "fift": "HASHEXTR_SHA256",
+ "fift_examples": [],
+ "gas": "1/33 gas per byte",
+ "opcode": "F90500",
+ "stack": "s_n ... s_1 n - h"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXTR_SHA256",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "h",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90501",
+ "tlb": "#F90501"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates and returns hash of the concatenation of slices (or builders) s_1...s_n.
\n",
+ "fift": "HASHEXTR_SHA512",
+ "fift_examples": [],
+ "gas": "1/16 gas per byte",
+ "opcode": "F90501",
+ "stack": "s_n ... s_1 n - h1 h2"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXTR_SHA512",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "h1",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "h2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90502",
+ "tlb": "#F90502"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates and returns hash of the concatenation of slices (or builders) s_1...s_n.
\n",
+ "fift": "HASHEXTR_BLAKE2B",
+ "fift_examples": [],
+ "gas": "1/19 gas per byte",
+ "opcode": "F90502",
+ "stack": "s_n ... s_1 n - h1 h2"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXTR_BLAKE2B",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "h1",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "h2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90503",
+ "tlb": "#F90503"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates and returns hash of the concatenation of slices (or builders) s_1...s_n.
\n",
+ "fift": "HASHEXTR_KECCAK256",
+ "fift_examples": [],
+ "gas": "1/11 gas per byte",
+ "opcode": "F90503",
+ "stack": "s_n ... s_1 n - h"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXTR_KECCAK256",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "h",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90504",
+ "tlb": "#F90504"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates and returns hash of the concatenation of slices (or builders) s_1...s_n.
\n",
+ "fift": "HASHEXTR_KECCAK512",
+ "fift_examples": [],
+ "gas": "1/19 gas per byte",
+ "opcode": "F90504",
+ "stack": "s_n ... s_1 n - h1 h2"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXTR_KECCAK512",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "h1",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "h2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90600",
+ "tlb": "#F90600"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates hash of the concatenation of slices (or builders) s_1...s_n. Appends the resulting hash to a builder b.
\n",
+ "fift": "HASHEXTA_SHA256",
+ "fift_examples": [],
+ "gas": "1/33 gas per byte",
+ "opcode": "F90600",
+ "stack": "b s_1 ... s_n n - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXTA_SHA256",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90601",
+ "tlb": "#F90601"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates hash of the concatenation of slices (or builders) s_1...s_n. Appends the resulting hash to a builder b.
\n",
+ "fift": "HASHEXTA_SHA512",
+ "fift_examples": [],
+ "gas": "1/16 gas per byte",
+ "opcode": "F90601",
+ "stack": "b s_1 ... s_n n - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXTA_SHA512",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90602",
+ "tlb": "#F90602"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates hash of the concatenation of slices (or builders) s_1...s_n. Appends the resulting hash to a builder b.
\n",
+ "fift": "HASHEXTA_BLAKE2B",
+ "fift_examples": [],
+ "gas": "1/19 gas per byte",
+ "opcode": "F90602",
+ "stack": "b s_1 ... s_n n - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXTA_BLAKE2B",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90603",
+ "tlb": "#F90603"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates hash of the concatenation of slices (or builders) s_1...s_n. Appends the resulting hash to a builder b.
\n",
+ "fift": "HASHEXTA_KECCAK256",
+ "fift_examples": [],
+ "gas": "1/11 gas per byte",
+ "opcode": "F90603",
+ "stack": "b s_1 ... s_n n - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXTA_KECCAK256",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90604",
+ "tlb": "#F90604"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates hash of the concatenation of slices (or builders) s_1...s_n. Appends the resulting hash to a builder b.
\n",
+ "fift": "HASHEXTA_KECCAK512",
+ "fift_examples": [],
+ "gas": "1/6 gas per byte",
+ "opcode": "F90604",
+ "stack": "b s_1 ... s_n n - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXTA_KECCAK512",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90700",
+ "tlb": "#F90700"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates hash of the concatenation of slices (or builders) s_1...s_n. Appends the resulting hash to a builder b.
\n",
+ "fift": "HASHEXTAR_SHA256",
+ "fift_examples": [],
+ "gas": "1/33 gas per byte",
+ "opcode": "F90700",
+ "stack": "b s_1 ... s_n n - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXTAR_SHA256",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90701",
+ "tlb": "#F90701"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates hash of the concatenation of slices (or builders) s_1...s_n. Appends the resulting hash to a builder b.
\n",
+ "fift": "HASHEXTAR_SHA512",
+ "fift_examples": [],
+ "gas": "1/16 gas per byte",
+ "opcode": "F90701",
+ "stack": "b s_n ... s_1 n - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXTAR_SHA512",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90702",
+ "tlb": "#F90702"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates hash of the concatenation of slices (or builders) s_1...s_n. Appends the resulting hash to a builder b.
\n",
+ "fift": "HASHEXTAR_BLAKE2B",
+ "fift_examples": [],
+ "gas": "1/19 gas per byte",
+ "opcode": "F90702",
+ "stack": "b s_n ... s_1 n - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXTAR_BLAKE2B",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90703",
+ "tlb": "#F90703"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates hash of the concatenation of slices (or builders) s_1...s_n. Appends the resulting hash to a builder b.
\n",
+ "fift": "HASHEXTAR_KECCAK256",
+ "fift_examples": [],
+ "gas": "1/11 gas per byte",
+ "opcode": "F90703",
+ "stack": "b s_n ... s_1 n - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXTAR_KECCAK256",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F90704",
+ "tlb": "#F90704"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates hash of the concatenation of slices (or builders) s_1...s_n. Appends the resulting hash to a builder b.
\n",
+ "fift": "HASHEXTAR_KECCAK512",
+ "fift_examples": [],
+ "gas": "1/6 gas per byte",
+ "opcode": "F90704",
+ "stack": "b s_n ... s_1 n - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_hash_ext",
+ "line": 652,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHEXTAR_KECCAK512",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "array_entry": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Builder"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "input_parts",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F910",
+ "tlb": "#F910"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Checks the Ed25519-signature s of a hash h (a 256-bit unsigned integer, usually computed as the hash of some data) using public key k (also represented by a 256-bit unsigned integer).\nThe signature s must be a Slice containing at least 512 data bits; only the first 512 bits are used. The result is -1 if the signature is valid, 0 otherwise.\nNotice that CHKSIGNU is equivalent to ROT NEWC 256 STU ENDC ROTREV CHKSIGNS, i.e., to CHKSIGNS with the first argument d set to 256-bit Slice containing h. Therefore, if h is computed as the hash of some data, these data are hashed twice, the second hashing occurring inside CHKSIGNS.
\n",
+ "fift": "CHKSIGNU",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F910",
+ "stack": "h s k - ?"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_ed25519_check_signature",
+ "line": 724,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "CHKSIGNU",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "h",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F911",
+ "tlb": "#F911"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Checks whether s is a valid Ed25519-signature of the data portion of Slice d using public key k, similarly to CHKSIGNU. If the bit length of Slice d is not divisible by eight, throws a cell underflow exception. The verification of Ed25519 signatures is the standard one, with Sha used to reduce d to the 256-bit number that is actually signed.
\n",
+ "fift": "CHKSIGNS",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F911",
+ "stack": "d s k - ?"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_ed25519_check_signature",
+ "line": 724,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "CHKSIGNS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "d",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F912",
+ "tlb": "#F912"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Recovers the public key from a secp256k1 signature, identical to Bitcoin/Ethereum operations. Takes a 32-byte hash as uint256 hash and a 65-byte signature as uint8 v, uint256 r, and uint256 s. In TON, the v value is strictly 0 or 1; no extra flags or extended values are supported. If the public key cannot be recovered, the instruction returns 0. On success, it returns the recovered 65-byte public key as uint8 h, uint256 x1, and uint256 x2, followed by -1.
\n",
+ "fift": "ECRECOVER",
+ "fift_examples": [],
+ "gas": "1526",
+ "opcode": "F912",
+ "stack": "hash v r s - 0 or h x1 x2 -1"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_ecrecover",
+ "line": 760,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "ECRECOVER",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "hash",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "v",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "r",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "h",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "x1",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "x2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F913",
+ "tlb": "#F913"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "performs secp256k1_xonly_pubkey_tweak_add. key and tweak are 256-bit unsigned integers. 65-byte public key is returned as uint8 f, uint256 x, y (as in ECRECOVER).
\n",
+ "fift": "SECP256K1_XONLY_PUBKEY_TWEAK_ADD",
+ "fift_examples": [],
+ "gas": "1576",
+ "opcode": "F913",
+ "stack": "key tweak - 0 or f x y -1"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_secp256k1_xonly_pubkey_tweak_add",
+ "line": 798,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "SECP256K1_XONLY_PUBKEY_TWEAK_ADD",
+ "since_version": 9,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "key",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "tweak",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F914",
+ "tlb": "#F914"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Checks seck256r1-signature sig of a number h (a 256-bit unsigned integer, usually computed as the hash of some data) and public key k. Returns -1 on success, 0 on failure. Public key is a 33-byte slice (encoded according to Sec. 2.3.4 point 2 of SECG SEC 1). Signature sig is a 64-byte slice (two 256-bit unsigned integers r and s).
\n",
+ "fift": "P256_CHKSIGNU",
+ "fift_examples": [],
+ "gas": "3526",
+ "opcode": "F914",
+ "stack": "h sig k - ?"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_p256_chksign",
+ "line": 829,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "P256_CHKSIGNU",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "d",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "sig",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F915",
+ "tlb": "#F915"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Checks seck256r1-signature sig of data portion of slice d and public key k. Returns -1 on success, 0 on failure. Public key is a 33-byte slice (encoded according to Sec. 2.3.4 point 2 of SECG SEC 1). Signature sig is a 64-byte slice (two 256-bit unsigned integers r and s).
\n",
+ "fift": "P256_CHKSIGNS",
+ "fift_examples": [],
+ "gas": "3526",
+ "opcode": "F915",
+ "stack": "d sig k - ?"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_p256_chksign",
+ "line": 829,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "P256_CHKSIGNS",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "d",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "sig",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "k",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F916",
+ "tlb": "#F916"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Same as ENDC HASHCU, but without gas cost for cell creation.
\n",
+ "fift": "HASHBU",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F916",
+ "stack": "b - hash"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_compute_hash",
+ "line": 612,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "HASHBU",
+ "since_version": 12,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "hash",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F920",
+ "tlb": "#F920"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Deterministically generates a valid point x from a 512-bit hash (given as two 256-bit integers).
\n",
+ "fift": "RIST255_FROMHASH",
+ "fift_examples": [],
+ "gas": "626",
+ "opcode": "F920",
+ "stack": "h1 h2 - x"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_ristretto255_from_hash",
+ "line": 874,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RIST255_FROMHASH",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "h1",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "h2",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F921",
+ "tlb": "#F921"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Checks that integer x is a valid representation of some curve point. Throws range_chk on error.
\n",
+ "fift": "RIST255_VALIDATE",
+ "fift_examples": [],
+ "gas": "226",
+ "opcode": "F921",
+ "stack": "x -"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_ristretto255_validate",
+ "line": 895,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RIST255_VALIDATE",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F922",
+ "tlb": "#F922"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Addition of two points on a curve.
\n",
+ "fift": "RIST255_ADD",
+ "fift_examples": [],
+ "gas": "626",
+ "opcode": "F922",
+ "stack": "x y - x+y"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_ristretto255_add",
+ "line": 914,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RIST255_ADD",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F923",
+ "tlb": "#F923"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Subtraction of two points on curve.
\n",
+ "fift": "RIST255_SUB",
+ "fift_examples": [],
+ "gas": "626",
+ "opcode": "F923",
+ "stack": "x y - x-y"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_ristretto255_sub",
+ "line": 938,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RIST255_SUB",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F924",
+ "tlb": "#F924"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Multiplies point x by a scalar n. Any n is valid, including negative.
\n",
+ "fift": "RIST255_MUL",
+ "fift_examples": [],
+ "gas": "2026",
+ "opcode": "F924",
+ "stack": "x n - x*n"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_ristretto255_mul",
+ "line": 976,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RIST255_MUL",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F925",
+ "tlb": "#F925"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Multiplies the generator point g by a scalar n. Any n is valid, including negative.
\n",
+ "fift": "RIST255_MULBASE",
+ "fift_examples": [],
+ "gas": "776",
+ "opcode": "F925",
+ "stack": "n - g*n"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_ristretto255_mul_base",
+ "line": 1007,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RIST255_MULBASE",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F926",
+ "tlb": "#F926"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Pushes integer l=2^252+27742317777372353535851937790883648493, which is the order of the group.
\n",
+ "fift": "RIST255_PUSHL",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F926",
+ "stack": "- l"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_ristretto255_push_l",
+ "line": 1032,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RIST255_PUSHL",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7F921",
+ "tlb": "#B7F921"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Checks that integer x is a valid representation of some curve point. Returns -1 on success and 0 on failure.
\n",
+ "fift": "RIST255_QVALIDATE",
+ "fift_examples": [],
+ "gas": "234",
+ "opcode": "B7F921",
+ "stack": "x - 0 or -1"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_ristretto255_validate",
+ "line": 895,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RIST255_QVALIDATE",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7F922",
+ "tlb": "#B7F922"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Addition of two points on a curve. Returns -1 on success and 0 on failure.
\n",
+ "fift": "RIST255_QADD",
+ "fift_examples": [],
+ "gas": "634",
+ "opcode": "B7F922",
+ "stack": "x y - 0 or x+y -1"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_ristretto255_add",
+ "line": 914,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RIST255_QADD",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7F923",
+ "tlb": "#B7F923"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Subtraction of two points on curve. Returns -1 on success and 0 on failure.
\n",
+ "fift": "RIST255_QSUB",
+ "fift_examples": [],
+ "gas": "634",
+ "opcode": "B7F923",
+ "stack": "x y - 0 or x-y -1"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_ristretto255_sub",
+ "line": 938,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RIST255_QSUB",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7F924",
+ "tlb": "#B7F924"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Multiplies point x by a scalar n. Any n is valid, including negative. Returns -1 on success and 0 on failure.
\n",
+ "fift": "RIST255_QMUL",
+ "fift_examples": [],
+ "gas": "2034",
+ "opcode": "B7F924",
+ "stack": "x n - 0 or x*n -1"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_ristretto255_mul",
+ "line": 976,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RIST255_QMUL",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "B7F925",
+ "tlb": "#B7F925"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Multiplies the generator point g by a scalar n. Any n is valid, including negative.
\n",
+ "fift": "RIST255_QMULBASE",
+ "fift_examples": [],
+ "gas": "784",
+ "opcode": "B7F925",
+ "stack": "n - 0 or g*n -1"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_ristretto255_mul_base",
+ "line": 1007,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RIST255_QMULBASE",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93000",
+ "tlb": "#F93000"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Checks BLS signature, return true on success, false otherwise.
\n",
+ "fift": "BLS_VERIFY",
+ "fift_examples": [],
+ "gas": "61034",
+ "opcode": "F93000",
+ "stack": "pk msg sgn - bool"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_verify",
+ "line": 1095,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_VERIFY",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "pk",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "msg",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "sgn",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93001",
+ "tlb": "#F93001"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Aggregates signatures. n>0. Throw exception if n=0 or if some sig_i is not a valid signature.
\n",
+ "fift": "BLS_AGGREGATE",
+ "fift_examples": [],
+ "gas": "n*4350-2616",
+ "opcode": "F93001",
+ "stack": "sig_1 ... sig_n n - sig"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_aggregate",
+ "line": 1107,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_AGGREGATE",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "sig",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "signatures",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93002",
+ "tlb": "#F93002"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Checks aggregated BLS signature for keys pk_1...pk_n and message msg. Return true on success, false otherwise. Return false if n=0.
\n",
+ "fift": "BLS_FASTAGGREGATEVERIFY",
+ "fift_examples": [],
+ "gas": "58034+n*3000",
+ "opcode": "F93002",
+ "stack": "pk_1 ... pk_n n msg sig - bool"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_fast_aggregate_verify",
+ "line": 1121,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_FASTAGGREGATEVERIFY",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "pk",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "public_keys",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "msg",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "sig",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93003",
+ "tlb": "#F93003"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Checks aggregated BLS signature for key-message pairs pk_1 msg_1...pk_n msg_n. Return true on success, false otherwise. Return false if n=0.
\n",
+ "fift": "BLS_AGGREGATEVERIFY",
+ "fift_examples": [],
+ "gas": "38534+n*22500",
+ "opcode": "F93003",
+ "stack": "pk_1 msg_1 ... pk_n msg_n n sgn - bool"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_aggregate_verify",
+ "line": 1138,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_AGGREGATEVERIFY",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "pk",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "msg",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "key_message_pairs",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "sgn",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93010",
+ "tlb": "#F93010"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Addition on G1.
\n",
+ "fift": "BLS_G1_ADD",
+ "fift_examples": [],
+ "gas": "3934",
+ "opcode": "F93010",
+ "stack": "x y - x+y"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g1_add",
+ "line": 1155,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G1_ADD",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93011",
+ "tlb": "#F93011"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Subtraction on G1.
\n",
+ "fift": "BLS_G1_SUB",
+ "fift_examples": [],
+ "gas": "3934",
+ "opcode": "F93011",
+ "stack": "x y - x-y"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g1_sub",
+ "line": 1166,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G1_SUB",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93012",
+ "tlb": "#F93012"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Negation on G1.
\n",
+ "fift": "BLS_G1_NEG",
+ "fift_examples": [],
+ "gas": "784",
+ "opcode": "F93012",
+ "stack": "x - -x"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g1_neg",
+ "line": 1177,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G1_NEG",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93013",
+ "tlb": "#F93013"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Multiplies G1 point x by scalar s. Any s is valid, including negative.
\n",
+ "fift": "BLS_G1_MUL",
+ "fift_examples": [],
+ "gas": "5234",
+ "opcode": "F93013",
+ "stack": "x s - x*s"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g1_mul",
+ "line": 1186,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G1_MUL",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93014",
+ "tlb": "#F93014"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates x_1*s_1+...+x_n*s_n for G1 points x_i and scalars s_i. Returns zero point if n=0. Any s_i is valid, including negative.
\n",
+ "fift": "BLS_G1_MULTIEXP",
+ "fift_examples": [],
+ "gas": "11409+n*630+n/floor(max(log2(n),4))*8820",
+ "opcode": "F93014",
+ "stack": "x_1 s_1 ... x_n s_n n - x_1*s_1+...+x_n*s_n"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g1_multiexp",
+ "line": 1197,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G1_MULTIEXP",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "components",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93015",
+ "tlb": "#F93015"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Pushes zero point in G1.
\n",
+ "fift": "BLS_G1_ZERO",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "F93015",
+ "stack": "- zero"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g1_zero",
+ "line": 1213,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G1_ZERO",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "zero",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93016",
+ "tlb": "#F93016"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Converts FP element f to a G1 point.
\n",
+ "fift": "BLS_MAP_TO_G1",
+ "fift_examples": [],
+ "gas": "2384",
+ "opcode": "F93016",
+ "stack": "f - x"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_map_to_g1",
+ "line": 1220,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_MAP_TO_G1",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93017",
+ "tlb": "#F93017"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Checks that slice x represents a valid element of G1.
\n",
+ "fift": "BLS_G1_INGROUP",
+ "fift_examples": [],
+ "gas": "2984",
+ "opcode": "F93017",
+ "stack": "x - bool"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g1_in_group",
+ "line": 1229,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G1_INGROUP",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93018",
+ "tlb": "#F93018"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Checks that G1 point x is equal to zero.
\n",
+ "fift": "BLS_G1_ISZERO",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "F93018",
+ "stack": "x - bool"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g1_is_zero",
+ "line": 1238,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G1_ISZERO",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93020",
+ "tlb": "#F93020"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Addition on G2.
\n",
+ "fift": "BLS_G2_ADD",
+ "fift_examples": [],
+ "gas": "6134",
+ "opcode": "F93020",
+ "stack": "x y - x+y"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g2_add",
+ "line": 1246,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G2_ADD",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93021",
+ "tlb": "#F93021"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Subtraction on G2.
\n",
+ "fift": "BLS_G2_SUB",
+ "fift_examples": [],
+ "gas": "6134",
+ "opcode": "F93021",
+ "stack": "x y - x-y"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g2_sub",
+ "line": 1257,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G2_SUB",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93022",
+ "tlb": "#F93022"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Negation on G2.
\n",
+ "fift": "BLS_G2_NEG",
+ "fift_examples": [],
+ "gas": "1584",
+ "opcode": "F93022",
+ "stack": "x - -x"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g2_neg",
+ "line": 1268,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G2_NEG",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93023",
+ "tlb": "#F93023"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Multiplies G2 point x by scalar s. Any s is valid, including negative.
\n",
+ "fift": "BLS_G2_MUL",
+ "fift_examples": [],
+ "gas": "10584",
+ "opcode": "F93023",
+ "stack": "x s - x*s"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g2_mul",
+ "line": 1277,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G2_MUL",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93024",
+ "tlb": "#F93024"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Calculates x_1*s_1+...+x_n*s_n for G2 points x_i and scalars s_i. Returns zero point if n=0. Any s_i is valid, including negative.
\n",
+ "fift": "BLS_G2_MULTIEXP",
+ "fift_examples": [],
+ "gas": "30422+n*1280+n/floor(max(log2(n),4))*22840",
+ "opcode": "F93024",
+ "stack": "x_1 s_1 ... x_n s_n n - x_1*s_1+...+x_n*s_n"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g2_multiexp",
+ "line": 1288,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G2_MULTIEXP",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "components",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93025",
+ "tlb": "#F93025"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Pushes zero point in G2.
\n",
+ "fift": "BLS_G2_ZERO",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "F93025",
+ "stack": "- zero"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g2_zero",
+ "line": 1304,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G2_ZERO",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "zero",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93026",
+ "tlb": "#F93026"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Converts FP2 element f to a G2 point.
\n",
+ "fift": "BLS_MAP_TO_G2",
+ "fift_examples": [],
+ "gas": "7984",
+ "opcode": "F93026",
+ "stack": "f - x"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_map_to_g2",
+ "line": 1311,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_MAP_TO_G2",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "f",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93027",
+ "tlb": "#F93027"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Checks that slice x represents a valid element of G2.
\n",
+ "fift": "BLS_G2_INGROUP",
+ "fift_examples": [],
+ "gas": "4284",
+ "opcode": "F93027",
+ "stack": "x - bool"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g2_in_group",
+ "line": 1320,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G2_INGROUP",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93028",
+ "tlb": "#F93028"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Checks that G2 point x is equal to zero.
\n",
+ "fift": "BLS_G2_ISZERO",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "F93028",
+ "stack": "x - bool"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_g2_is_zero",
+ "line": 1329,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_G2_ISZERO",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93030",
+ "tlb": "#F93030"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Given G1 points x_i and G2 points y_i, calculates and multiply pairings of x_i,y_i. Returns true if the result is the multiplicative identity in FP12, false otherwise. Returns false if n=0.
\n",
+ "fift": "BLS_PAIRING",
+ "fift_examples": [],
+ "gas": "20034+n*11800",
+ "opcode": "F93030",
+ "stack": "x_1 y_1 ... x_n y_n n - bool"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_pairing",
+ "line": 1337,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_PAIRING",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "array_entry": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "length_var": "n",
+ "name": "components",
+ "type": "array"
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F93031",
+ "tlb": "#F93031"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_crypto",
+ "description": "Pushes the order of G1 and G2 (approx. 2^255).
\n",
+ "fift": "BLS_PUSHR",
+ "fift_examples": [],
+ "gas": "34",
+ "opcode": "F93031",
+ "stack": "- r"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_bls_push_r",
+ "line": 1351,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "BLS_PUSHR",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "result",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F940",
+ "tlb": "#F940"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_misc",
+ "description": "Recursively computes the count of distinct cells x, data bits y, and cell references z in the dag rooted at Cell c, effectively returning the total storage used by this dag taking into account the identification of equal cells. The values of x, y, and z are computed by a depth-first traversal of this dag, with a hash table of visited cell hashes used to prevent visits of already-visited cells. The total count of visited cells x cannot exceed non-negative Integer n; otherwise the computation is aborted before visiting the (n+1)-st cell and a zero is returned to indicate failure. If c is Null, returns x=y=z=0.
\n",
+ "fift": "CDATASIZEQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F940",
+ "stack": "c n - x y z -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_compute_data_size",
+ "line": 1415,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "CDATASIZEQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F941",
+ "tlb": "#F941"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_misc",
+ "description": "A non-quiet version of CDATASIZEQ that throws a cell overflow exception (8) on failure.
\n",
+ "fift": "CDATASIZE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F941",
+ "stack": "c n - x y z"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_compute_data_size",
+ "line": 1415,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "CDATASIZE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F942",
+ "tlb": "#F942"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_misc",
+ "description": "Similar to CDATASIZEQ, but accepting a Slice s instead of a Cell. The returned value of x does not take into account the cell that contains the slice s itself; however, the data bits and the cell references of s are accounted for in y and z.
\n",
+ "fift": "SDATASIZEQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F942",
+ "stack": "s n - x y z -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_compute_data_size",
+ "line": 1415,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "SDATASIZEQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "F943",
+ "tlb": "#F943"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_misc",
+ "description": "A non-quiet version of SDATASIZEQ that throws a cell overflow exception (8) on failure.
\n",
+ "fift": "SDATASIZE",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "F943",
+ "stack": "s n - x y z"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_compute_data_size",
+ "line": 1415,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "SDATASIZE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "n",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "z",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA00",
+ "tlb": "#FA00"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_currency",
+ "description": "Loads (deserializes) a Gram or VarUInteger 16 amount from Slice s, and returns the amount as Integer x along with the remainder s' of s. The expected serialization of x consists of a 4-bit unsigned big-endian integer l, followed by an 8l-bit unsigned big-endian representation of x.\nThe net effect is approximately equivalent to 4 LDU SWAP 3 LSHIFT# LDUX.
\n",
+ "fift": "LDGRAMS\nLDVARUINT16",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA00",
+ "stack": "s - x s'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_load_var_integer",
+ "line": 1453,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "LDGRAMS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA01",
+ "tlb": "#FA01"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_currency",
+ "description": "Similar to LDVARUINT16, but loads a signed Integer x.\nApproximately equivalent to 4 LDU SWAP 3 LSHIFT# LDIX.
\n",
+ "fift": "LDVARINT16",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA01",
+ "stack": "s - x s'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_load_var_integer",
+ "line": 1453,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "LDVARINT16",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA02",
+ "tlb": "#FA02"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_currency",
+ "description": "Stores (serializes) an Integer x in the range 0...2^120-1 into Builder b, and returns the resulting Builder b'. The serialization of x consists of a 4-bit unsigned big-endian integer l, which is the smallest integer l>=0, such that x<2^(8l), followed by an 8l-bit unsigned big-endian representation of x. If x does not belong to the supported range, a range check exception is thrown.
\n",
+ "fift": "STGRAMS\nSTVARUINT16",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA02",
+ "stack": "b x - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_store_var_integer",
+ "line": 1474,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "STGRAMS",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA03",
+ "tlb": "#FA03"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_currency",
+ "description": "Similar to STVARUINT16, but serializes a signed Integer x in the range -2^119...2^119-1.
\n",
+ "fift": "STVARINT16",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA03",
+ "stack": "b x - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_store_var_integer",
+ "line": 1474,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "STVARINT16",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA04",
+ "tlb": "#FA04"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_currency",
+ "description": "Loads (deserializes) a VarUInteger 32 amount from Slice s, and returns the amount as Integer x along with the remainder s' of s. The expected serialization of x consists of a 5-bit unsigned big-endian integer l, followed by an 8l-bit unsigned big-endian representation of x.\nThe net effect is approximately equivalent to 4 LDU SWAP 3 LSHIFT# LDUX.
\n",
+ "fift": "LDVARUINT32",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA04",
+ "stack": "s - x s'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_load_var_integer",
+ "line": 1453,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "LDVARUINT32",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA05",
+ "tlb": "#FA05"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_currency",
+ "description": "Similar to LDVARUINT32, but loads a signed Integer x.\nApproximately equivalent to 5 LDU SWAP 3 LSHIFT# LDIX.
\n",
+ "fift": "LDVARINT32",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA05",
+ "stack": "s - x s'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_load_var_integer",
+ "line": 1453,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "LDVARINT32",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA06",
+ "tlb": "#FA06"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_currency",
+ "description": "Stores (serializes) an Integer x in the range 0...2^248-1 into Builder b, and returns the resulting Builder b'. The serialization of x consists of a 5-bit unsigned big-endian integer l, which is the smallest integer l>=0, such that x<2^(8l), followed by an 8l-bit unsigned big-endian representation of x. If x does not belong to the supported range, a range check exception is thrown.
\n",
+ "fift": "STVARUINT32",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA06",
+ "stack": "b x - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_store_var_integer",
+ "line": 1474,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "STVARUINT32",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA07",
+ "tlb": "#FA07"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_currency",
+ "description": "Similar to STVARUINT32, but serializes a signed Integer x in the range -2^247...2^247-1.
\n",
+ "fift": "STVARINT32",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA07",
+ "stack": "b x - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_store_var_integer",
+ "line": 1474,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "STVARINT32",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA40",
+ "tlb": "#FA40"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "Loads from Slice s the only prefix that is a valid MsgAddress, and returns both this prefix s' and the remainder s'' of s as slices.
\n",
+ "fift": "LDMSGADDR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA40",
+ "stack": "s - s' s''"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_load_message_addr",
+ "line": 1536,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "LDMSGADDR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA41",
+ "tlb": "#FA41"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "A quiet version of LDMSGADDR: on success, pushes an extra -1; on failure, pushes the original s and a zero.
\n",
+ "fift": "LDMSGADDRQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA41",
+ "stack": "s - s' s'' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_load_message_addr",
+ "line": 1536,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "LDMSGADDRQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s3",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA42",
+ "tlb": "#FA42"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "Decomposes Slice s containing a valid MsgAddress into a Tuple t with separate fields of this MsgAddress. If s is not a valid MsgAddress, a cell deserialization exception is thrown.
\n",
+ "fift": "PARSEMSGADDR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA42",
+ "stack": "s - t"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_parse_message_addr",
+ "line": 1629,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "PARSEMSGADDR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA43",
+ "tlb": "#FA43"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "A quiet version of PARSEMSGADDR: returns a zero on error instead of throwing an exception.
\n",
+ "fift": "PARSEMSGADDRQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA43",
+ "stack": "s - t -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_parse_message_addr",
+ "line": 1629,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "PARSEMSGADDRQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "t",
+ "type": "simple",
+ "value_types": [
+ "Tuple"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA44",
+ "tlb": "#FA44"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "Parses Slice s containing a valid MsgAddressInt (usually a msg_addr_std), applies rewriting from the anycast (if present) to the same-length prefix of the address, and returns both the workchain x and the 256-bit address y as integers. If the address is not 256-bit, or if s is not a valid serialization of MsgAddressInt, throws a cell deserialization exception.
\n",
+ "fift": "REWRITESTDADDR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA44",
+ "stack": "s - x y"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_rewrite_message_addr",
+ "line": 1669,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "REWRITESTDADDR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA45",
+ "tlb": "#FA45"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "A quiet version of primitive REWRITESTDADDR.
\n",
+ "fift": "REWRITESTDADDRQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA45",
+ "stack": "s - x y -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_rewrite_message_addr",
+ "line": 1669,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "REWRITESTDADDRQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA46",
+ "tlb": "#FA46"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "msg_addr_var not allowed since TVM v10, so it behaves like REWRITESTDADDR, but returns account id in Slice, not Integer: parses address s into workchain x and account id s.
\n",
+ "fift": "REWRITEVARADDR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA46",
+ "stack": "s - x s'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_rewrite_message_addr",
+ "line": 1669,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "REWRITEVARADDR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA47",
+ "tlb": "#FA47"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "A quiet version of primitive REWRITEVARADDR.
\n",
+ "fift": "REWRITEVARADDRQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA47",
+ "stack": "s - x s' -1 or 0"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_rewrite_message_addr",
+ "line": 1669,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "REWRITEVARADDRQ",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "s'",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA48",
+ "tlb": "#FA48"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "Loads addr_std$10, if address is not addr_std, throws an error 9 (cannot load a MsgAddressInt).
\n",
+ "fift": "LDSTDADDR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA48",
+ "stack": "s - a s'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_load_std_message_addr",
+ "line": 1568,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "LDSTDADDR",
+ "since_version": 12,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "a",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA49",
+ "tlb": "#FA49"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "A quiet version of primitive LDSTDADDR.
\n",
+ "fift": "LDSTDADDRQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA49",
+ "stack": "s - a s' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_load_std_message_addr",
+ "line": 1568,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "LDSTDADDRQ",
+ "since_version": 12,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "a",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "s'",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA50",
+ "tlb": "#FA50"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "Loads addr_std$10 or addr_none$00, if address is addr_none$00 pushes a Null, if address is not addr_std or addr_none, throws an error 9 (cannot load a MsgAddressInt).
\n",
+ "fift": "LDOPTSTDADDR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA50",
+ "stack": "s - a s'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_load_opt_std_message_addr",
+ "line": 1586,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "LDOPTSTDADDR",
+ "since_version": 12,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "a",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "s2",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA51",
+ "tlb": "#FA51"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "A quiet version of primitive LDOPTSTDADDR.
\n",
+ "fift": "LDOPTSTDADDRQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA51",
+ "stack": "s - a s' -1 or s 0"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_load_opt_std_message_addr",
+ "line": 1586,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "LDOPTSTDADDRQ",
+ "since_version": 12,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "s",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "a",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "s'",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA52",
+ "tlb": "#FA52"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "Stores addr_std$10, if address is not addr_std, throws an error 9 (cannot load a MsgAddressInt).
\n",
+ "fift": "STSTDADDR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA52",
+ "stack": "a b - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_store_std_address",
+ "line": 1822,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "STSTDADDR",
+ "since_version": 12,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "a",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA53",
+ "tlb": "#FA53"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "A quiet version of primitive STSTDADDR.
\n",
+ "fift": "STSTDADDRQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA53",
+ "stack": "a b - b' 0 or a b -1"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_store_std_address",
+ "line": 1822,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "STSTDADDRQ",
+ "since_version": 12,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "a",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "a",
+ "type": "simple",
+ "value_types": [
+ "Slice"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA54",
+ "tlb": "#FA54"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "stores addr_std$10 or Null. Null is stored as addr_none$00, if address is not addr_std, throws an error 9 (cannot load a MsgAddressInt).
\n",
+ "fift": "STOPTSTDADDR",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA54",
+ "stack": "a b - b'"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_store_opt_std_address",
+ "line": 1855,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "STOPTSTDADDR",
+ "since_version": 12,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "a",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FA55",
+ "tlb": "#FA55"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_addr",
+ "description": "A quiet version of primitive STOPTSTDADDR.
\n",
+ "fift": "STOPTSTDADDRQ",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FA55",
+ "stack": "a b - b' 0 or a b -1"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_store_opt_std_address",
+ "line": 1855,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/f58297f1b668c7b49e8b30b65062951ca7c18acc/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "STOPTSTDADDRQ",
+ "since_version": 12,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "a",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": [
+ {
+ "match": [
+ {
+ "stack": [
+ {
+ "name": "b2",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": 0
+ },
+ {
+ "stack": [
+ {
+ "name": "a",
+ "type": "simple",
+ "value_types": [
+ "Slice",
+ "Null"
+ ]
+ },
+ {
+ "name": "b",
+ "type": "simple",
+ "value_types": [
+ "Builder"
+ ]
+ }
+ ],
+ "value": -1
+ }
+ ],
+ "name": "status",
+ "type": "conditional"
+ },
+ {
+ "name": "status",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FB00",
+ "tlb": "#FB00"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_actions",
+ "description": "Sends a raw message contained in Cell c, which should contain a correctly serialized object Message X, with the only exception that the source address is allowed to have dummy value addr_none (to be automatically replaced with the current smart-contract address), and ihr_fee, fwd_fee, created_lt and created_at fields can have arbitrary values (to be rewritten with correct values during the action phase of the current transaction). Integer parameter x contains the flags. Currently x=0 is used for ordinary messages; x=128 is used for messages that are to carry all the remaining balance of the current smart contract (instead of the value originally indicated in the message); x=64 is used for messages that carry all the remaining value of the inbound message in addition to the value initially indicated in the new message (if bit 0 is not set, the gas fees are deducted from this amount); x'=x+1 means that the sender wants to pay transfer fees separately; x'=x+2 means that any errors arising while processing this message during the action phase should be ignored. Finally, x'=x+32 means that the current account must be destroyed if its resulting balance is zero. This flag is usually employed together with +128.
\n",
+ "fift": "SENDRAWMSG",
+ "fift_examples": [],
+ "gas": "526",
+ "opcode": "FB00",
+ "stack": "c x - "
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_send_raw_message",
+ "line": 1762,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "SENDRAWMSG",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 5,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 5,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FB02",
+ "tlb": "#FB02"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_actions",
+ "description": "Creates an output action which would reserve exactly x nanograms (if y=0), at most x nanograms (if y=2), or all but x nanograms (if y=1 or y=3), from the remaining balance of the account. It is roughly equivalent to creating an outbound message carrying x nanograms (or b-x nanograms, where b is the remaining balance) to oneself, so that the subsequent output actions would not be able to spend more money than the remainder. Bit +2 in y means that the external action does not fail if the specified amount cannot be reserved; instead, all remaining balance is reserved. Bit +8 in y means x:=-x before performing any further actions. Bit +4 in y means that x is increased by the original balance of the current account (before the compute phase), including all extra currencies, before performing any other checks and actions. Currently x must be a non-negative integer, and y must be in the range 0...15.
\n",
+ "fift": "RAWRESERVE",
+ "fift_examples": [],
+ "gas": "526",
+ "opcode": "FB02",
+ "stack": "x y - "
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_reserve_raw",
+ "line": 2035,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RAWRESERVE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 5,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 5,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FB03",
+ "tlb": "#FB03"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_actions",
+ "description": "Similar to RAWRESERVE, but also accepts a dictionary D (represented by a Cell or Null) with extra currencies. In this way currencies other than Grams can be reserved.
\n",
+ "fift": "RAWRESERVEX",
+ "fift_examples": [],
+ "gas": "526",
+ "opcode": "FB03",
+ "stack": "x D y - "
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_reserve_raw",
+ "line": 2035,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "RAWRESERVEX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 5,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "D",
+ "type": "simple",
+ "value_types": [
+ "Cell",
+ "Null"
+ ]
+ },
+ {
+ "name": "y",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 5,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FB04",
+ "tlb": "#FB04"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_actions",
+ "description": "Creates an output action that would change this smart contract code to that given by Cell c. Notice that this change will take effect only after the successful termination of the current run of the smart contract.
\n",
+ "fift": "SETCODE",
+ "fift_examples": [],
+ "gas": "526",
+ "opcode": "FB04",
+ "stack": "c - "
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_set_code",
+ "line": 2059,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "SETCODE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 5,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 5,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FB06",
+ "tlb": "#FB06"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_actions",
+ "description": "Creates an output action that would modify the collection of this smart contract libraries by adding or removing library with code given in Cell c. If x=0, the library is actually removed if it was previously present in the collection (if not, this action does nothing). If x=1, the library is added as a private library, and if x=2, the library is added as a public library (and becomes available to all smart contracts if the current smart contract resides in the masterchain); if the library was present in the collection before, its public/private status is changed according to x. Values of x other than 0...2 are invalid.
\n",
+ "fift": "SETLIBCODE",
+ "fift_examples": [],
+ "gas": "526",
+ "opcode": "FB06",
+ "stack": "c x - "
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_set_lib_code",
+ "line": 2071,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "SETLIBCODE",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 5,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 5,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FB07",
+ "tlb": "#FB07"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_actions",
+ "description": "Creates an output action similarly to SETLIBCODE, but instead of the library code accepts its hash as an unsigned 256-bit integer h. If x!=0 and the library with hash h is absent from the library collection of this smart contract, this output action will fail.
\n",
+ "fift": "CHANGELIB",
+ "fift_examples": [],
+ "gas": "526",
+ "opcode": "FB07",
+ "stack": "h x - "
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_change_lib",
+ "line": 2095,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "CHANGELIB",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 5,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "h",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 5,
+ "type": "constant"
+ }
+ ],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FB08",
+ "tlb": "#FB08"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "app_actions",
+ "description": "Creates an output action and returns a fee for creating a message. Mode has the same effect as in the case of SENDRAWMSG. Additionally +1024 means - do not create an action, only estimate fee. Other modes affect the fee calculation as follows: +64 substitutes the entire balance of the incoming message as an outcoming value (slightly inaccurate, gas expenses that cannot be estimated before the computation is completed are not taken into account), +128 substitutes the value of the entire balance of the contract before the start of the computation phase (slightly inaccurate, since gas expenses that cannot be estimated before the completion of the computation phase are not taken into account).
\n",
+ "fift": "SENDMSG",
+ "fift_examples": [],
+ "gas": "526",
+ "opcode": "FB08",
+ "stack": "c x - fee"
+ },
+ "implementation": [
+ {
+ "file": "tonops.cpp",
+ "function_name": "exec_send_message",
+ "line": 1800,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/tonops.cpp"
+ }
+ ],
+ "mnemonic": "SENDMSG",
+ "since_version": 4,
+ "value_flow": {
+ "inputs": {
+ "registers": [
+ {
+ "index": 5,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Cell"
+ ]
+ },
+ {
+ "name": "x",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [
+ {
+ "index": 5,
+ "type": "constant"
+ }
+ ],
+ "stack": [
+ {
+ "name": "fee",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 14,
+ "min_value": 0,
+ "name": "i",
+ "size": 4,
+ "type": "uint"
+ },
+ {
+ "display_hints": [],
+ "max_value": 15,
+ "min_value": 0,
+ "name": "j",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "operands_range_check": {
+ "from": 0,
+ "length": 4,
+ "to": 14
+ },
+ "prefix": "FE",
+ "tlb": "#FE i:(#<= 14) j:(## 4)"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "debug",
+ "description": "",
+ "fift": "{i*16+j} DEBUG",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FEij",
+ "stack": "-"
+ },
+ "implementation": [
+ {
+ "file": "debugops.cpp",
+ "function_name": "exec_dummy_debug",
+ "line": 35,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/debugops.cpp"
+ }
+ ],
+ "mnemonic": "DEBUG",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "bits_length_var_size": 4,
+ "bits_padding": 8,
+ "completion_tag": false,
+ "display_hints": [],
+ "max_bits": 128,
+ "max_refs": 0,
+ "min_bits": 8,
+ "min_refs": 0,
+ "name": "s",
+ "type": "subslice"
+ }
+ ],
+ "prefix": "FEF",
+ "tlb": "#FEF n:(## 4) ssss:((n * 8 + 8) * Bit)"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "debug",
+ "description": "0 <= n < 16. Length of ssss is n+1 bytes.\n{string} is a string literal.\nDEBUGSTR: ssss is the given string.\nDEBUGSTRI: ssss is one-byte integer 0 <= x <= 255 followed by the given string.
\n",
+ "fift": "{string} DEBUGSTR\n{string} {x} DEBUGSTRI",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FEFnssss",
+ "stack": "-"
+ },
+ "implementation": [
+ {
+ "file": "debugops.cpp",
+ "function_name": "exec_dummy_debug_str",
+ "line": 41,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/debugops.cpp"
+ }
+ ],
+ "mnemonic": "DEBUGSTR",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [],
+ "max_value": 239,
+ "min_value": 0,
+ "name": "n",
+ "size": 8,
+ "type": "uint"
+ }
+ ],
+ "operands_range_check": {
+ "from": 0,
+ "length": 8,
+ "to": 239
+ },
+ "prefix": "FF",
+ "tlb": "#FF nn:(#<= 239)"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "codepage",
+ "description": "Selects TVM codepage 0 <= nn < 240. If the codepage is not supported, throws an invalid opcode exception.
\n",
+ "fift": "[nn] SETCP",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FFnn",
+ "stack": "-"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_set_cp",
+ "line": 1237,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SETCP",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [
+ {
+ "display_hints": [
+ {
+ "type": "add",
+ "value": -16
+ }
+ ],
+ "max_value": 15,
+ "min_value": 1,
+ "name": "z",
+ "size": 4,
+ "type": "uint"
+ }
+ ],
+ "operands_range_check": {
+ "from": 1,
+ "length": 4,
+ "to": 15
+ },
+ "prefix": "FFF",
+ "tlb": "#FFF z:(## 4) {1 <= z}"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "codepage",
+ "description": "Selects TVM codepage z-16 for 1 <= z <= 15. Negative codepages -13...-1 are reserved for restricted versions of TVM needed to validate runs of TVM in other codepages. Negative codepage -14 is reserved for experimental codepages, not necessarily compatible between different TVM implementations, and should be disabled in the production versions of TVM.
\n",
+ "fift": "[z-16] SETCP",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FFFz",
+ "stack": "-"
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_set_cp",
+ "line": 1237,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SETCP_SPECIAL",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": []
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ },
+ {
+ "bytecode": {
+ "operands": [],
+ "prefix": "FFF0",
+ "tlb": "#FFF0"
+ },
+ "control_flow": {
+ "branches": [],
+ "nobranch": true
+ },
+ "doc": {
+ "category": "codepage",
+ "description": "Selects codepage c with -2^15 <= c < 2^15 passed in the top of the stack.
\n",
+ "fift": "SETCPX",
+ "fift_examples": [],
+ "gas": "26",
+ "opcode": "FFF0",
+ "stack": "c - "
+ },
+ "implementation": [
+ {
+ "file": "contops.cpp",
+ "function_name": "exec_set_cp_any",
+ "line": 1243,
+ "path": "https://raw.githubusercontent.com/ton-blockchain/ton/4ebd7412c52248360464c2df5f434c8aaa3edfe1/crypto/vm/contops.cpp"
+ }
+ ],
+ "mnemonic": "SETCPX",
+ "since_version": 0,
+ "value_flow": {
+ "inputs": {
+ "registers": [],
+ "stack": [
+ {
+ "name": "c",
+ "type": "simple",
+ "value_types": [
+ "Integer"
+ ]
+ }
+ ]
+ },
+ "outputs": {
+ "registers": [],
+ "stack": []
+ }
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/package.json b/package.json
index 52f63fc..79ab75e 100644
--- a/package.json
+++ b/package.json
@@ -6,6 +6,7 @@
"dev": "vite",
"wasm": "wasm-pack build fift-wasm --release --target web",
"build": "vue-tsc --noEmit && vite build",
+ "update-opcodes": "wget -O cp0.json https://raw.githubusercontent.com/ton-org/docs/refs/heads/main/resources/tvm/cp0.txt",
"preview": "vite preview"
},
"dependencies": {
diff --git a/src/Output.vue b/src/Output.vue
index dbdf0e1..81c1c42 100644
--- a/src/Output.vue
+++ b/src/Output.vue
@@ -33,7 +33,7 @@ function makeDefaultState(): OutputState {
const store = inject('store') as Store
-const { fiftModule } = useFift();
+const { fiftModule } = useFift(store);
const state = ref(makeDefaultState())
const tabs = ref();
diff --git a/src/monaco/Monaco.vue b/src/monaco/Monaco.vue
index 3dc8cc0..256ca24 100644
--- a/src/monaco/Monaco.vue
+++ b/src/monaco/Monaco.vue
@@ -11,16 +11,14 @@ import { getOrCreateModel } from './utils';
import fiftGrammar from './fift.tmLanguage.json';
const registry = new Registry({
- getGrammarDefinition: async _ => {
- return {
- format: 'json',
- content: fiftGrammar
- };
- }
+ getGrammarDefinition: async () => ({
+ format: 'json',
+ content: fiftGrammar
+ })
});
const grammars = new Map();
-grammars.set('fift', 'source.fif');
+grammars.set('fift', 'source.fift');
const props = withDefaults(
defineProps<{
@@ -51,6 +49,9 @@ onMounted(async () => {
throw new Error('Cannot find containerRef');
}
+ // Wait for WASM to load before creating editor
+ await initPromise;
+
const editorInstance = monaco.editor.create(containerRef.value, {
...(props.readonly
? { value: props.value, language: lang.value, wordWrap: 'on' }
@@ -134,7 +135,8 @@ onMounted(async () => {
)
}
- initPromise.then(() => wireTmGrammars(monaco as any, registry, grammars, editorInstance as any));
+ // Wire TextMate grammars (initPromise already resolved above)
+ await wireTmGrammars(monaco as any, registry, grammars, editorInstance as any);
editorInstance.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyS, () => {
// ignore save event
diff --git a/src/monaco/env.ts b/src/monaco/env.ts
index 25b017f..454df1a 100644
--- a/src/monaco/env.ts
+++ b/src/monaco/env.ts
@@ -6,6 +6,7 @@ import { watchEffect } from 'vue';
import { Store } from '../store';
import { getOrCreateModel } from './utils';
+import { createCompletionProvider, createHoverProvider } from './opcodes';
const URI_PREFIX_LEN = 'file:///'.length;
@@ -53,4 +54,8 @@ export function loadMonacoEnv() {
};
languages.register({ id: 'fift', extensions: ['.fif'] });
+
+ // Register completion and hover providers for TVM opcodes
+ languages.registerCompletionItemProvider('fift', createCompletionProvider());
+ languages.registerHoverProvider('fift', createHoverProvider());
}
diff --git a/src/monaco/opcodes.ts b/src/monaco/opcodes.ts
new file mode 100644
index 0000000..3e5ca65
--- /dev/null
+++ b/src/monaco/opcodes.ts
@@ -0,0 +1,308 @@
+import { languages } from 'monaco-editor-core';
+import cp0Data from '../../cp0.json';
+
+const fiftWordsWithStdlib = new Set();
+const fiftWordsWithoutStdlib = new Set();
+let fiftWordsWithStdlibLoaded = false;
+let fiftWordsWithoutStdlibLoaded = false;
+let currentIncludeStdlib = true;
+
+export interface OpcodeInfo {
+ mnemonic: string;
+ fift: string;
+ stack: string;
+ description: string;
+ category?: string;
+ gas?: string;
+ opcode?: string;
+ isAlias?: boolean;
+ aliasOf?: string;
+ snippet?: string;
+ hasOperands?: boolean;
+}
+
+const opcodeMap = new Map();
+
+function stripHtml(html: string): string {
+ return html
+ .replace(/<[^>]*>/g, '')
+ .replace(/</g, '<')
+ .replace(/>/g, '>')
+ .replace(/&/g, '&')
+ .replace(/"/g, '"')
+ .replace(/'/g, "'")
+ .replace(/ /g, ' ')
+ .trim();
+}
+
+/**
+ * Convert fift syntax like "s[i] s[j] XCHG" to snippet "s${1:i} s${2:j} XCHG"
+ */
+function createSnippet(fiftSyntax: string): { snippet: string; hasOperands: boolean } {
+ let snippet = fiftSyntax.trim();
+ let placeholderIndex = 1;
+ let hasOperands = false;
+
+ // Replace [var] patterns with ${n:var} placeholders
+ // Handle patterns like: [i], [j], [k], [n], [x], [y], [c], [args], etc.
+ snippet = snippet.replace(/\[([a-zA-Z_][a-zA-Z0-9_]*(?:\+\d+)?)\]/g, (_, varName) => {
+ hasOperands = true;
+ return `\${${placeholderIndex++}:${varName}}`;
+ });
+
+ return { snippet, hasOperands };
+}
+
+// Interface for Fift module (matches @fift exports)
+interface FiftModule {
+ interpret(
+ fileProvider: { fileExists(name: string): boolean; readFile(name: string): ArrayBuffer },
+ code: string,
+ includeStdlib: boolean
+ ): { success: boolean; stdout: string; stderr?: string };
+}
+
+const emptyFileProvider = {
+ fileExists: () => false,
+ readFile: () => { throw new Error('No files'); }
+};
+
+/**
+ * Load Fift words dynamically from the interpreter
+ */
+export function loadFiftWords(fiftModule: FiftModule, includeStdlib: boolean): void {
+ const targetSet = includeStdlib ? fiftWordsWithStdlib : fiftWordsWithoutStdlib;
+ const isLoaded = includeStdlib ? fiftWordsWithStdlibLoaded : fiftWordsWithoutStdlibLoaded;
+
+ if (isLoaded) return;
+
+ try {
+ const result = fiftModule.interpret(emptyFileProvider, 'words', includeStdlib);
+ if (result.success && result.stdout) {
+ const words = result.stdout.trim().split(/\s+/).filter(w => w.length > 0);
+ targetSet.clear();
+ for (const word of words) {
+ targetSet.add(word);
+ }
+ if (includeStdlib) {
+ fiftWordsWithStdlibLoaded = true;
+ } else {
+ fiftWordsWithoutStdlibLoaded = true;
+ }
+ console.log(`Loaded ${targetSet.size} Fift words from interpreter (stdlib=${includeStdlib})`);
+ }
+ } catch (e) {
+ console.error('Failed to load Fift words:', e);
+ }
+}
+
+/**
+ * Set the current includeStdlib preference for completions
+ */
+export function setIncludeStdlib(includeStdlib: boolean): void {
+ currentIncludeStdlib = includeStdlib;
+}
+
+function initOpcodes() {
+ if (opcodeMap.size > 0) return;
+
+ // Process aliases
+ for (const alias of (cp0Data as any).aliases || []) {
+ const fiftNames = (alias.doc_fift || alias.mnemonic || '').split('\n');
+ for (const fiftSyntax of fiftNames) {
+ const trimmedSyntax = fiftSyntax.trim();
+ if (!trimmedSyntax) continue;
+
+ // Extract the opcode name (last word without brackets)
+ const cleanName = trimmedSyntax.replace(/\[.*?\]/g, '').replace(/\s+/g, ' ').trim();
+ const parts = cleanName.split(' ');
+ const key = parts[parts.length - 1].toUpperCase();
+
+ const { snippet, hasOperands } = createSnippet(trimmedSyntax);
+
+ opcodeMap.set(key, {
+ mnemonic: alias.mnemonic,
+ fift: alias.doc_fift || alias.mnemonic,
+ stack: alias.doc_stack || '',
+ description: stripHtml(alias.description || ''),
+ isAlias: true,
+ aliasOf: alias.alias_of,
+ snippet,
+ hasOperands,
+ });
+ }
+ }
+
+ // Process instructions
+ for (const instr of (cp0Data as any).instructions || []) {
+ const doc = instr.doc || {};
+ const fiftNames = (doc.fift || instr.mnemonic || '').split('\n');
+
+ for (const fiftSyntax of fiftNames) {
+ const trimmedSyntax = fiftSyntax.trim();
+ if (!trimmedSyntax) continue;
+
+ // Extract the opcode name (last word without brackets)
+ const cleanName = trimmedSyntax.replace(/\[.*?\]/g, '').replace(/\s+/g, ' ').trim();
+ const parts = cleanName.split(' ');
+ const key = parts[parts.length - 1].toUpperCase();
+
+ if (opcodeMap.has(key)) continue; // Don't override aliases
+
+ const { snippet, hasOperands } = createSnippet(trimmedSyntax);
+
+ opcodeMap.set(key, {
+ mnemonic: instr.mnemonic,
+ fift: doc.fift || instr.mnemonic,
+ stack: doc.stack || '',
+ description: stripHtml(doc.description || ''),
+ category: doc.category,
+ gas: doc.gas,
+ opcode: doc.opcode,
+ snippet,
+ hasOperands,
+ });
+ }
+ }
+}
+
+export function createCompletionProvider(): languages.CompletionItemProvider {
+ return {
+ triggerCharacters: [],
+ provideCompletionItems(model, position) {
+ initOpcodes();
+
+ const word = model.getWordUntilPosition(position);
+ const range = {
+ startLineNumber: position.lineNumber,
+ endLineNumber: position.lineNumber,
+ startColumn: word.startColumn,
+ endColumn: word.endColumn,
+ };
+
+ const suggestions: languages.CompletionItem[] = [];
+
+ // Add TVM opcodes
+ for (const [name, info] of opcodeMap) {
+ let detail = '';
+ if (info.stack) {
+ detail = info.stack;
+ }
+
+ let documentation = '';
+ if (info.fift && info.hasOperands) {
+ documentation += `**Syntax:** \`${info.fift}\`\n\n`;
+ }
+ if (info.description) {
+ documentation += info.description;
+ }
+ if (info.gas) {
+ documentation += `\n\n**Gas:** ${info.gas}`;
+ }
+ if (info.isAlias && info.aliasOf) {
+ documentation += `\n\n**Alias of:** ${info.aliasOf}`;
+ }
+ if (info.category) {
+ documentation += `\n\n**Category:** ${info.category.replace(/_/g, ' ')}`;
+ }
+
+ // Use snippet if the opcode has operands
+ const useSnippet = info.hasOperands && info.snippet;
+
+ suggestions.push({
+ label: {
+ label: name,
+ detail: info.hasOperands ? ` ${info.fift.split('\n')[0]}` : undefined,
+ description: 'TVM',
+ },
+ kind: useSnippet ? languages.CompletionItemKind.Snippet : languages.CompletionItemKind.Keyword,
+ detail,
+ documentation: {
+ value: documentation,
+ },
+ insertText: useSnippet ? info.snippet! : name,
+ insertTextRules: useSnippet ? 4 : undefined, // InsertAsSnippet
+ range,
+ });
+ }
+
+ // Add Fift built-in words (respecting current stdlib setting)
+ const fiftWordSet = currentIncludeStdlib ? fiftWordsWithStdlib : fiftWordsWithoutStdlib;
+ for (const word of fiftWordSet) {
+ suggestions.push({
+ label: {
+ label: word,
+ description: 'Fift',
+ },
+ kind: languages.CompletionItemKind.Function,
+ insertText: word,
+ range,
+ });
+ }
+
+ return { suggestions };
+ },
+ };
+}
+
+export function createHoverProvider(): languages.HoverProvider {
+ return {
+ provideHover(model, position) {
+ initOpcodes();
+
+ const word = model.getWordAtPosition(position);
+ if (!word) return null;
+
+ const info = opcodeMap.get(word.word.toUpperCase());
+ if (!info) return null;
+
+ const contents: { value: string }[] = [];
+
+ // Main title with stack effect
+ let header = `**${word.word.toUpperCase()}**`;
+ if (info.stack) {
+ header += ` \`${info.stack}\``;
+ }
+ contents.push({ value: header });
+
+ // Syntax with operands
+ if (info.hasOperands && info.fift) {
+ contents.push({ value: `Syntax: \`${info.fift.split('\n')[0]}\`` });
+ }
+
+ // Description
+ if (info.description) {
+ contents.push({ value: info.description });
+ }
+
+ // Additional info
+ const details: string[] = [];
+ if (info.gas) {
+ details.push(`**Gas:** ${info.gas}`);
+ }
+ if (info.opcode) {
+ details.push(`**Opcode:** \`${info.opcode}\``);
+ }
+ if (info.category) {
+ details.push(`**Category:** ${info.category.replace(/_/g, ' ')}`);
+ }
+ if (info.isAlias && info.aliasOf) {
+ details.push(`**Alias of:** ${info.aliasOf}`);
+ }
+
+ if (details.length > 0) {
+ contents.push({ value: details.join(' | ') });
+ }
+
+ return {
+ range: {
+ startLineNumber: position.lineNumber,
+ endLineNumber: position.lineNumber,
+ startColumn: word.startColumn,
+ endColumn: word.endColumn,
+ },
+ contents,
+ };
+ },
+ };
+}
diff --git a/src/providers/useFift.ts b/src/providers/useFift.ts
index 4a14f71..827829a 100644
--- a/src/providers/useFift.ts
+++ b/src/providers/useFift.ts
@@ -1,17 +1,35 @@
-import { shallowRef } from 'vue';
+import { shallowRef, watch } from 'vue';
import init, * as wasm from '@fift';
+import { loadFiftWords, setIncludeStdlib } from '../monaco/opcodes';
+import type { Store } from '../store';
let startedLoading = false;
let fiftModule = shallowRef();
+let storeWatcherSetup = false;
-export function useFift() {
+export function useFift(store?: Store) {
if (!startedLoading) {
startedLoading = true;
init().then(() => {
fiftModule.value = wasm;
+ // Load Fift words for autocompletion (for both stdlib settings)
+ loadFiftWords(wasm, true);
+ loadFiftWords(wasm, false);
});
}
+ // Set up watcher for includeStdlib changes (only once)
+ if (store && !storeWatcherSetup) {
+ storeWatcherSetup = true;
+ watch(
+ () => store.state.includeStdlib,
+ (includeStdlib) => {
+ setIncludeStdlib(includeStdlib);
+ },
+ { immediate: true }
+ );
+ }
+
return {
fiftModule
};