UNPKG

@tact-lang/tact-language-server

Version:
1,402 lines 1.33 MB
{ "$schema": "schema.json", "instructions": [ { "mnemonic": "NOP", "since_version": 0, "doc": { "category": "stack_basic", "description": "Does nothing.", "gas": "18", "fift": "NOP", "fift_examples": [], "opcode": "00", "stack": "-" }, "bytecode": {"tlb": "#00", "prefix": "00", "operands": []}, "value_flow": { "inputs": {"stack": [], "registers": []}, "outputs": {"stack": [], "registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "XCHG_0I", "since_version": 0, "doc": { "category": "stack_basic", "description": "Interchanges `s0` with `s[i]`, `1 <= i <= 15`.", "gas": "18", "fift": "s[i] XCHG0", "fift_examples": [], "opcode": "0i", "stack": "" }, "bytecode": { "tlb": "#0 i:(## 4) {1 <= i}", "prefix": "0", "operands_range_check": {"length": 4, "from": 1, "to": 15}, "operands": [ { "name": "i", "type": "uint", "size": 4, "min_value": 1, "max_value": 15, "display_hints": [{"type": "stack"}] } ] }, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "XCHG_IJ", "since_version": 0, "doc": { "category": "stack_basic", "description": "Interchanges `s[i]` with `s[j]`, `1 <= i < j <= 15`.", "gas": "26", "fift": "s[i] s[j] XCHG", "fift_examples": [], "opcode": "10ij", "stack": "" }, "bytecode": { "tlb": "#10 i:(## 4) j:(## 4) {1 <= i} {i + 1 <= j}", "prefix": "10", "operands_range_check": {"length": 4, "from": 1, "to": 15}, "operands": [ { "name": "i", "type": "uint", "size": 4, "min_value": 1, "max_value": 15, "display_hints": [{"type": "stack"}] }, { "name": "j", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}] } ] }, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "XCHG_0I_LONG", "since_version": 0, "doc": { "category": "stack_basic", "description": "Interchanges `s0` with `s[ii]`, `0 <= ii <= 255`.", "gas": "26", "fift": "s0 [ii] s() XCHG", "fift_examples": [], "opcode": "11ii", "stack": "" }, "bytecode": { "tlb": "#11 ii:uint8", "prefix": "11", "operands": [ { "name": "i", "type": "uint", "size": 8, "min_value": 0, "max_value": 255, "display_hints": [{"type": "stack"}] } ] }, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "XCHG_1I", "since_version": 0, "doc": { "category": "stack_basic", "description": "Interchanges `s1` with `s[i]`, `2 <= i <= 15`.", "gas": "18", "fift": "s1 s[i] XCHG", "fift_examples": [], "opcode": "1i", "stack": "" }, "bytecode": { "tlb": "#1 i:(## 4) {2 <= i}", "prefix": "1", "operands_range_check": {"length": 4, "from": 2, "to": 15}, "operands": [ { "name": "i", "type": "uint", "size": 4, "min_value": 2, "max_value": 15, "display_hints": [{"type": "stack"}] } ] }, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "PUSH", "since_version": 0, "doc": { "category": "stack_basic", "description": "Pushes a copy of the old `s[i]` into the stack.", "gas": "18", "fift": "s[i] PUSH", "fift_examples": [], "opcode": "2i", "stack": "" }, "bytecode": { "tlb": "#2 i:uint4", "prefix": "2", "operands": [ { "name": "i", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}] } ] }, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "POP", "since_version": 0, "doc": { "category": "stack_basic", "description": "Pops the old `s0` value into the old `s[i]`.", "gas": "18", "fift": "s[i] POP", "fift_examples": [], "opcode": "3i", "stack": "" }, "bytecode": { "tlb": "#3 i:uint4", "prefix": "3", "operands": [ { "name": "i", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}] } ] }, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "XCHG3", "since_version": 0, "doc": { "category": "stack_complex", "description": "Equivalent to `s2 s[i] XCHG` `s1 s[j] XCHG` `s[k] XCHG0`.", "gas": "26", "fift": "s[i] s[j] s[k] XCHG3", "fift_examples": [], "opcode": "4ijk", "stack": "" }, "bytecode": { "tlb": "#4 i:uint4 j:uint4 k:uint4", "prefix": "4", "operands": [ { "name": "i", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}] }, { "name": "j", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}] }, { "name": "k", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}] } ] }, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "XCHG2", "since_version": 0, "doc": { "category": "stack_complex", "description": "Equivalent to `s1 s[i] XCHG` `s[j] XCHG0`.", "gas": "26", "fift": "s[i] s[j] XCHG2", "fift_examples": [], "opcode": "50ij", "stack": "" }, "bytecode": { "tlb": "#50 i:uint4 j:uint4", "prefix": "50", "operands": [ { "name": "i", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}] }, { "name": "j", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}] } ] }, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "XCPU", "since_version": 0, "doc": { "category": "stack_complex", "description": "Equivalent to `s[i] XCHG0` `s[j] PUSH`.", "gas": "26", "fift": "s[i] s[j] XCPU", "fift_examples": [], "opcode": "51ij", "stack": "" }, "bytecode": { "tlb": "#51 i:uint4 j:uint4", "prefix": "51", "operands": [ { "name": "i", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}] }, { "name": "j", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}] } ] }, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "PUXC", "since_version": 0, "doc": { "category": "stack_complex", "description": "Equivalent to `s[i] PUSH` `SWAP` `s[j] XCHG0`.", "gas": "26", "fift": "s[i] s[j-1] PUXC", "fift_examples": [], "opcode": "52ij", "stack": "" }, "bytecode": { "tlb": "#52 i:uint4 j:uint4", "prefix": "52", "operands": [ { "name": "i", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}] }, { "name": "j", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}, {"type": "add", "value": 1}] } ] }, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "PUSH2", "since_version": 0, "doc": { "category": "stack_complex", "description": "Equivalent to `s[i] PUSH` `s[j+1] PUSH`.", "gas": "26", "fift": "s[i] s[j] PUSH2", "fift_examples": [], "opcode": "53ij", "stack": "" }, "bytecode": { "tlb": "#53 i:uint4 j:uint4", "prefix": "53", "operands": [ { "name": "i", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}] }, { "name": "j", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}] } ] }, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "XCHG3_ALT", "since_version": 0, "doc": { "category": "stack_complex", "description": "Long form of `XCHG3`.", "gas": "34", "fift": "s[i] s[j] s[k] XCHG3_l", "fift_examples": [], "opcode": "540ijk", "stack": "" }, "bytecode": { "tlb": "#540 i:uint4 j:uint4 k:uint4", "prefix": "540", "operands": [ { "name": "i", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}] }, { "name": "j", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}] }, { "name": "k", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}] } ] }, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "XC2PU", "since_version": 0, "doc": { "category": "stack_complex", "description": "Equivalent to `s[i] s[j] XCHG2` `s[k] PUSH`.", "gas": "34", "fift": "s[i] s[j] s[k] XC2PU", "fift_examples": [], "opcode": "541ijk", "stack": "" }, "bytecode": { "tlb": "#541 i:uint4 j:uint4 k:uint4", "prefix": "541", "operands": [ { "name": "i", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}] }, { "name": "j", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}] }, { "name": "k", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}] } ] }, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "XCPUXC", "since_version": 0, "doc": { "category": "stack_complex", "description": "Equivalent to `s1 s[i] XCHG` `s[j] s[k-1] PUXC`.", "gas": "34", "fift": "s[i] s[j] s[k-1] XCPUXC", "fift_examples": [], "opcode": "542ijk", "stack": "" }, "bytecode": { "tlb": "#542 i:uint4 j:uint4 k:uint4", "prefix": "542", "operands": [ { "name": "i", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}] }, { "name": "j", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}] }, { "name": "k", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}, {"type": "add", "value": 1}] } ] }, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "XCPU2", "since_version": 0, "doc": { "category": "stack_complex", "description": "Equivalent to `s[i] XCHG0` `s[j] s[k] PUSH2`.", "gas": "34", "fift": "s[i] s[j] s[k] XCPU2", "fift_examples": [], "opcode": "543ijk", "stack": "" }, "bytecode": { "tlb": "#543 i:uint4 j:uint4 k:uint4", "prefix": "543", "operands": [ { "name": "i", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}] }, { "name": "j", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}] }, { "name": "k", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}] } ] }, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "PUXC2", "since_version": 0, "doc": { "category": "stack_complex", "description": "Equivalent to `s[i] PUSH` `s2 XCHG0` `s[j] s[k] XCHG2`.", "gas": "34", "fift": "s[i] s[j-1] s[k-1] PUXC2", "fift_examples": [], "opcode": "544ijk", "stack": "" }, "bytecode": { "tlb": "#544 i:uint4 j:uint4 k:uint4", "prefix": "544", "operands": [ { "name": "i", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}] }, { "name": "j", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}, {"type": "add", "value": 1}] }, { "name": "k", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}, {"type": "add", "value": 1}] } ] }, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "PUXCPU", "since_version": 0, "doc": { "category": "stack_complex", "description": "Equivalent to `s[i] s[j-1] PUXC` `s[k] PUSH`.", "gas": "34", "fift": "s[i] s[j-1] s[k-1] PUXCPU", "fift_examples": [], "opcode": "545ijk", "stack": "" }, "bytecode": { "tlb": "#545 i:uint4 j:uint4 k:uint4", "prefix": "545", "operands": [ { "name": "i", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}] }, { "name": "j", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}, {"type": "add", "value": 1}] }, { "name": "k", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}, {"type": "add", "value": 1}] } ] }, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "PU2XC", "since_version": 0, "doc": { "category": "stack_complex", "description": "Equivalent to `s[i] PUSH` `SWAP` `s[j] s[k-1] PUXC`.", "gas": "34", "fift": "s[i] s[j-1] s[k-2] PU2XC", "fift_examples": [], "opcode": "546ijk", "stack": "" }, "bytecode": { "tlb": "#546 i:uint4 j:uint4 k:uint4", "prefix": "546", "operands": [ { "name": "i", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}] }, { "name": "j", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}, {"type": "add", "value": 1}] }, { "name": "k", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}, {"type": "add", "value": 2}] } ] }, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "PUSH3", "since_version": 0, "doc": { "category": "stack_complex", "description": "Equivalent to `s[i] PUSH` `s[j+1] s[k+1] PUSH2`.", "gas": "34", "fift": "s[i] s[j] s[k] PUSH3", "fift_examples": [], "opcode": "547ijk", "stack": "" }, "bytecode": { "tlb": "#547 i:uint4 j:uint4 k:uint4", "prefix": "547", "operands": [ { "name": "i", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}] }, { "name": "j", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}] }, { "name": "k", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}] } ] }, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "BLKSWAP", "since_version": 0, "doc": { "category": "stack_complex", "description": "Permutes two blocks `s[j+i+1] ... s[j+1]` and `s[j] ... s0`.\n`0 <= i,j <= 15`\nEquivalent to `[i+1] [j+1] REVERSE` `[j+1] 0 REVERSE` `[i+j+2] 0 REVERSE`.", "gas": "26", "fift": "[i+1] [j+1] BLKSWAP", "fift_examples": [], "opcode": "55ij", "stack": "" }, "bytecode": { "tlb": "#55 i:uint4 j:uint4", "prefix": "55", "operands": [ { "name": "i", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}, {"type": "add", "value": 1}] }, { "name": "j", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [{"type": "stack"}, {"type": "add", "value": 1}] } ] }, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "PUSH_LONG", "since_version": 0, "doc": { "category": "stack_complex", "description": "Pushes a copy of the old `s[ii]` into the stack.\n`0 <= ii <= 255`", "gas": "26", "fift": "[ii] s() PUSH", "fift_examples": [], "opcode": "56ii", "stack": "" }, "bytecode": { "tlb": "#56 ii:uint8", "prefix": "56", "operands": [ { "name": "i", "type": "uint", "size": 8, "min_value": 0, "max_value": 255, "display_hints": [{"type": "stack"}] } ] }, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "POP_LONG", "since_version": 0, "doc": { "category": "stack_complex", "description": "Pops the old `s0` value into the old `s[ii]`.\n`0 <= ii <= 255`", "gas": "26", "fift": "[ii] s() POP", "fift_examples": [], "opcode": "57ii", "stack": "" }, "bytecode": { "tlb": "#57 ii:uint8", "prefix": "57", "operands": [ { "name": "i", "type": "uint", "size": 8, "min_value": 0, "max_value": 255, "display_hints": [{"type": "stack"}] } ] }, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "ROT", "since_version": 0, "doc": { "category": "stack_complex", "description": "Equivalent to `1 2 BLKSWAP` or to `s2 s1 XCHG2`.", "gas": "18", "fift": "ROT", "fift_examples": [], "opcode": "58", "stack": "a b c - b c a" }, "bytecode": {"tlb": "#58", "prefix": "58", "operands": []}, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "ROTREV", "since_version": 0, "doc": { "category": "stack_complex", "description": "Equivalent to `2 1 BLKSWAP` or to `s2 s2 XCHG2`.", "gas": "18", "fift": "ROTREV\n-ROT", "fift_examples": [], "opcode": "59", "stack": "a b c - c a b" }, "bytecode": {"tlb": "#59", "prefix": "59", "operands": []}, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "SWAP2", "since_version": 0, "doc": { "category": "stack_complex", "description": "Equivalent to `2 2 BLKSWAP` or to `s3 s2 XCHG2`.", "gas": "18", "fift": "SWAP2\n2SWAP", "fift_examples": [], "opcode": "5A", "stack": "a b c d - c d a b" }, "bytecode": {"tlb": "#5A", "prefix": "5A", "operands": []}, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "DROP2", "since_version": 0, "doc": { "category": "stack_complex", "description": "Equivalent to `DROP` `DROP`.", "gas": "18", "fift": "DROP2\n2DROP", "fift_examples": [], "opcode": "5B", "stack": "a b - " }, "bytecode": {"tlb": "#5B", "prefix": "5B", "operands": []}, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "DUP2", "since_version": 0, "doc": { "category": "stack_complex", "description": "Equivalent to `s1 s0 PUSH2`.", "gas": "18", "fift": "DUP2\n2DUP", "fift_examples": [], "opcode": "5C", "stack": "a b - a b a b" }, "bytecode": {"tlb": "#5C", "prefix": "5C", "operands": []}, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "OVER2", "since_version": 0, "doc": { "category": "stack_complex", "description": "Equivalent to `s3 s2 PUSH2`.", "gas": "18", "fift": "OVER2\n2OVER", "fift_examples": [], "opcode": "5D", "stack": "a b c d - a b c d a b" }, "bytecode": {"tlb": "#5D", "prefix": "5D", "operands": []}, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "REVERSE", "since_version": 0, "doc": { "category": "stack_complex", "description": "Reverses the order of `s[j+i+1] ... s[j]`.", "gas": "26", "fift": "[i+2] [j] REVERSE", "fift_examples": [], "opcode": "5Eij", "stack": "" }, "bytecode": { "tlb": "#5E i:uint4 j:uint4", "prefix": "5E", "operands": [ { "name": "i", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [] }, { "name": "j", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [] } ] }, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "BLKDROP", "since_version": 0, "doc": { "category": "stack_complex", "description": "Equivalent to `DROP` performed `i` times.", "gas": "26", "fift": "[i] BLKDROP", "fift_examples": [], "opcode": "5F0i", "stack": "" }, "bytecode": { "tlb": "#5F0 i:uint4", "prefix": "5F0", "operands": [ { "name": "i", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [] } ] }, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "BLKPUSH", "since_version": 0, "doc": { "category": "stack_complex", "description": "Equivalent to `PUSH s(j)` performed `i` times.\n`1 <= i <= 15`, `0 <= j <= 15`.", "gas": "26", "fift": "[i] [j] BLKPUSH", "fift_examples": [], "opcode": "5Fij", "stack": "" }, "bytecode": { "tlb": "#5F i:(## 4) j:uint4 {1 <= i}", "prefix": "5F", "operands_range_check": {"length": 4, "from": 1, "to": 15}, "operands": [ { "name": "i", "type": "uint", "size": 4, "min_value": 1, "max_value": 15, "display_hints": [] }, { "name": "j", "type": "uint", "size": 4, "min_value": 0, "max_value": 15, "display_hints": [] } ] }, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "PICK", "since_version": 0, "doc": { "category": "stack_complex", "description": "Pops integer `i` from the stack, then performs `s[i] PUSH`.", "gas": "18", "fift": "PICK\nPUSHX", "fift_examples": [], "opcode": "60", "stack": "" }, "bytecode": {"tlb": "#60", "prefix": "60", "operands": []}, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "ROLLX", "since_version": 0, "doc": { "category": "stack_complex", "description": "Pops integer `i` from the stack, then performs `1 [i] BLKSWAP`.", "gas": "18", "fift": "ROLLX", "fift_examples": [], "opcode": "61", "stack": "" }, "bytecode": {"tlb": "#61", "prefix": "61", "operands": []}, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "-ROLLX", "since_version": 0, "doc": { "category": "stack_complex", "description": "Pops integer `i` from the stack, then performs `[i] 1 BLKSWAP`.", "gas": "18", "fift": "-ROLLX\nROLLREVX", "fift_examples": [], "opcode": "62", "stack": "" }, "bytecode": {"tlb": "#62", "prefix": "62", "operands": []}, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "BLKSWX", "since_version": 0, "doc": { "category": "stack_complex", "description": "Pops integers `i`,`j` from the stack, then performs `[i] [j] BLKSWAP`.", "gas": "18", "fift": "BLKSWX", "fift_examples": [], "opcode": "63", "stack": "" }, "bytecode": {"tlb": "#63", "prefix": "63", "operands": []}, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "REVX", "since_version": 0, "doc": { "category": "stack_complex", "description": "Pops integers `i`,`j` from the stack, then performs `[i] [j] REVERSE`.", "gas": "18", "fift": "REVX", "fift_examples": [], "opcode": "64", "stack": "" }, "bytecode": {"tlb": "#64", "prefix": "64", "operands": []}, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "DROPX", "since_version": 0, "doc": { "category": "stack_complex", "description": "Pops integer `i` from the stack, then performs `[i] BLKDROP`.", "gas": "18", "fift": "DROPX", "fift_examples": [], "opcode": "65", "stack": "" }, "bytecode": {"tlb": "#65", "prefix": "65", "operands": []}, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "TUCK", "since_version": 0, "doc": { "category": "stack_complex", "description": "Equivalent to `SWAP` `OVER` or to `s1 s1 XCPU`.", "gas": "18", "fift": "TUCK", "fift_examples": [], "opcode": "66", "stack": "a b - b a b" }, "bytecode": {"tlb": "#66", "prefix": "66", "operands": []}, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "XCHGX", "since_version": 0, "doc": { "category": "stack_complex", "description": "Pops integer `i` from the stack, then performs `s[i] XCHG`.", "gas": "18", "fift": "XCHGX", "fift_examples": [], "opcode": "67", "stack": "" }, "bytecode": {"tlb": "#67", "prefix": "67", "operands": []}, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "DEPTH", "since_version": 0, "doc": { "category": "stack_complex", "description": "Pushes the current depth of the stack.", "gas": "18", "fift": "DEPTH", "fift_examples": [], "opcode": "68", "stack": "- depth" }, "bytecode": {"tlb": "#68", "prefix": "68", "operands": []}, "value_flow": { "inputs": {"stack": [], "registers": []}, "outputs": { "stack": [{"type": "simple", "name": "depth", "value_types": ["Integer"]}], "registers": [] } }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "CHKDEPTH", "since_version": 0, "doc": { "category": "stack_complex", "description": "Pops integer `i` from the stack, then checks whether there are at least `i` elements, generating a stack underflow exception otherwise.", "gas": "18/58", "fift": "CHKDEPTH", "fift_examples": [], "opcode": "69", "stack": "i -" }, "bytecode": {"tlb": "#69", "prefix": "69", "operands": []}, "value_flow": { "inputs": { "stack": [{"type": "simple", "name": "i", "value_types": ["Integer"]}], "registers": [] }, "outputs": {"stack": [], "registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "ONLYTOPX", "since_version": 0, "doc": { "category": "stack_complex", "description": "Pops integer `i` from the stack, then removes all but the top `i` elements.", "gas": "18", "fift": "ONLYTOPX", "fift_examples": [], "opcode": "6A", "stack": "" }, "bytecode": {"tlb": "#6A", "prefix": "6A", "operands": []}, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "ONLYX", "since_version": 0, "doc": { "category": "stack_complex", "description": "Pops integer `i` from the stack, then leaves only the bottom `i` elements. Approximately equivalent to `DEPTH` `SWAP` `SUB` `DROPX`.", "gas": "18", "fift": "ONLYX", "fift_examples": [], "opcode": "6B", "stack": "" }, "bytecode": {"tlb": "#6B", "prefix": "6B", "operands": []}, "value_flow": { "inputs": {"registers": []}, "outputs": {"registers": []} }, "control_flow": {"branches": [], "nobranch": true} }, { "mnemonic": "BLKDROP2", "since_version": 0, "doc": { "category": "stack_complex", "description": "Drops `i` stack elements under the top `j` elements.\n`1 <= i <= 15`, `0 <= j <= 15`\nEquivalent to `[i+j] 0 REVERSE` `[i] BLKDROP` `[j] 0 REVERSE`.", "gas": "26", "fift": "[i] [j] BLKDROP2", "fift_examples": [], "opcode": "6Cij", "stack": "" }, "bytecode": { "tlb": "#6C i:(## 4) j:uint4 {1 <= i}", "prefix": "6C", "operands_range_check": {"length": 4, "from": 1, "to": 15}, "operands": [ { "name": "i", "type":