blob: 40c21f1bdeddc467ea387fda2b3763124beab8d6 [file] [log] [blame] [raw]
import {AssemblyInstructionInfo} from '../base';
export function getAsmOpcode(opcode: string | undefined): AssemblyInstructionInfo | undefined {
if (!opcode) return;
switch (opcode.toUpperCase()) {
case "STOP":
return {
"html": "Halts execution\nInput: -\nOutput: -",
"tooltip": "Halts execution",
"url": "https://www.evm.codes/#00"
};
case "ADD":
return {
"html": "Addition operation\nInput: <code>a | b</code>\nOutput: <code>a + b</code>",
"tooltip": "Addition operation",
"url": "https://www.evm.codes/#01"
};
case "MUL":
return {
"html": "Multiplication operation\nInput: <code>a | b</code>\nOutput: <code>a * b</code>",
"tooltip": "Multiplication operation",
"url": "https://www.evm.codes/#02"
};
case "SUB":
return {
"html": "Subtraction operation\nInput: <code>a | b</code>\nOutput: <code>a - b</code>",
"tooltip": "Subtraction operation",
"url": "https://www.evm.codes/#03"
};
case "DIV":
return {
"html": "Integer division operation\nInput: <code>a | b</code>\nOutput: <code>a // b</code>",
"tooltip": "Integer division operation",
"url": "https://www.evm.codes/#04"
};
case "SDIV":
return {
"html": "Signed integer division operation (truncated)\nInput: <code>a | b</code>\nOutput: <code>a // b</code>",
"tooltip": "Signed integer division operation (truncated)",
"url": "https://www.evm.codes/#05"
};
case "MOD":
return {
"html": "Modulo remainder operation\nInput: <code>a | b</code>\nOutput: <code>a % b</code>",
"tooltip": "Modulo remainder operation",
"url": "https://www.evm.codes/#06"
};
case "SMOD":
return {
"html": "Signed modulo remainder operation\nInput: <code>a | b</code>\nOutput: <code>a % b</code>",
"tooltip": "Signed modulo remainder operation",
"url": "https://www.evm.codes/#07"
};
case "ADDMOD":
return {
"html": "Modulo addition operation\nInput: <code>a | b | N</code>\nOutput: <code>(a + b) % N</code>",
"tooltip": "Modulo addition operation",
"url": "https://www.evm.codes/#08"
};
case "MULMOD":
return {
"html": "Modulo multiplication operation\nInput: <code>a | b | N</code>\nOutput: <code>(a * b) % N</code>",
"tooltip": "Modulo multiplication operation",
"url": "https://www.evm.codes/#09"
};
case "EXP":
return {
"html": "Exponential operation\nInput: <code>a | exponent</code>\nOutput: <code>a ** exponent</code>",
"tooltip": "Exponential operation",
"url": "https://www.evm.codes/#0a"
};
case "SIGNEXTEND":
return {
"html": "Extend length of two\u2019s complement signed integer\nInput: <code>b | x</code>\nOutput: <code>y</code>",
"tooltip": "Extend length of two\u2019s complement signed integer",
"url": "https://www.evm.codes/#0b"
};
case "LT":
return {
"html": "Less-than comparison\nInput: <code>a | b</code>\nOutput: <code>a < b</code>",
"tooltip": "Less-than comparison",
"url": "https://www.evm.codes/#10"
};
case "GT":
return {
"html": "Greater-than comparison\nInput: <code>a | b</code>\nOutput: <code>a > b</code>",
"tooltip": "Greater-than comparison",
"url": "https://www.evm.codes/#11"
};
case "SLT":
return {
"html": "Signed less-than comparison\nInput: <code>a | b</code>\nOutput: <code>a < b</code>",
"tooltip": "Signed less-than comparison",
"url": "https://www.evm.codes/#12"
};
case "SGT":
return {
"html": "Signed greater-than comparison\nInput: <code>a | b</code>\nOutput: <code>a > b</code>",
"tooltip": "Signed greater-than comparison",
"url": "https://www.evm.codes/#13"
};
case "EQ":
return {
"html": "Equality comparison\nInput: <code>a | b</code>\nOutput: <code>a == b</code>",
"tooltip": "Equality comparison",
"url": "https://www.evm.codes/#14"
};
case "ISZERO":
return {
"html": "Simple not operator\nInput: <code>a</code>\nOutput: <code>a == 0</code>",
"tooltip": "Simple not operator",
"url": "https://www.evm.codes/#15"
};
case "AND":
return {
"html": "Bitwise AND operation\nInput: <code>a | b</code>\nOutput: <code>a & b</code>",
"tooltip": "Bitwise AND operation",
"url": "https://www.evm.codes/#16"
};
case "OR":
return {
"html": "Bitwise OR operation\nInput: <code>a | b</code>\nOutput: <code>a \\| b</code>",
"tooltip": "Bitwise OR operation",
"url": "https://www.evm.codes/#17"
};
case "XOR":
return {
"html": "Bitwise XOR operation\nInput: <code>a | b</code>\nOutput: <code>a ^ b</code>",
"tooltip": "Bitwise XOR operation",
"url": "https://www.evm.codes/#18"
};
case "NOT":
return {
"html": "Bitwise NOT operation\nInput: <code>a</code>\nOutput: <code>~a</code>",
"tooltip": "Bitwise NOT operation",
"url": "https://www.evm.codes/#19"
};
case "BYTE":
return {
"html": "Retrieve single byte from word\nInput: <code>i | x</code>\nOutput: <code>y</code>",
"tooltip": "Retrieve single byte from word",
"url": "https://www.evm.codes/#1a"
};
case "SHL":
return {
"html": "Left shift operation\nInput: <code>shift | value</code>\nOutput: <code>value << shift</code>",
"tooltip": "Left shift operation",
"url": "https://www.evm.codes/#1b"
};
case "SHR":
return {
"html": "Logical right shift operation\nInput: <code>shift | value</code>\nOutput: <code>value >> shift</code>",
"tooltip": "Logical right shift operation",
"url": "https://www.evm.codes/#1c"
};
case "SAR":
return {
"html": "Arithmetic (signed) right shift operation\nInput: <code>shift | value</code>\nOutput: <code>value >> shift</code>",
"tooltip": "Arithmetic (signed) right shift operation",
"url": "https://www.evm.codes/#1d"
};
case "KECCAK256":
return {
"html": "Compute Keccak-256 hash\nInput: <code>offset | size</code>\nOutput: <code>hash</code>",
"tooltip": "Compute Keccak-256 hash",
"url": "https://www.evm.codes/#20"
};
case "ADDRESS":
return {
"html": "Get address of currently executing account\nInput: -\nOutput: <code>address</code>",
"tooltip": "Get address of currently executing account",
"url": "https://www.evm.codes/#30"
};
case "BALANCE":
return {
"html": "Get balance of the given account\nInput: <code>address</code>\nOutput: <code>balance</code>",
"tooltip": "Get balance of the given account",
"url": "https://www.evm.codes/#31"
};
case "ORIGIN":
return {
"html": "Get execution origination address\nInput: -\nOutput: <code>address</code>",
"tooltip": "Get execution origination address",
"url": "https://www.evm.codes/#32"
};
case "CALLER":
return {
"html": "Get caller address\nInput: -\nOutput: <code>address</code>",
"tooltip": "Get caller address",
"url": "https://www.evm.codes/#33"
};
case "CALLVALUE":
return {
"html": "Get deposited value by the instruction/transaction responsible for this execution\nInput: -\nOutput: <code>value</code>",
"tooltip": "Get deposited value by the instruction/transaction responsible for this execution",
"url": "https://www.evm.codes/#34"
};
case "CALLDATALOAD":
return {
"html": "Get input data of current environment\nInput: <code>i</code>\nOutput: <code>data[i]</code>",
"tooltip": "Get input data of current environment",
"url": "https://www.evm.codes/#35"
};
case "CALLDATASIZE":
return {
"html": "Get size of input data in current environment\nInput: -\nOutput: <code>size</code>",
"tooltip": "Get size of input data in current environment",
"url": "https://www.evm.codes/#36"
};
case "CALLDATACOPY":
return {
"html": "Copy input data in current environment to memory\nInput: <code>destOffset | offset | size</code>\nOutput: -",
"tooltip": "Copy input data in current environment to memory",
"url": "https://www.evm.codes/#37"
};
case "CODESIZE":
return {
"html": "Get size of code running in current environment\nInput: -\nOutput: <code>size</code>",
"tooltip": "Get size of code running in current environment",
"url": "https://www.evm.codes/#38"
};
case "CODECOPY":
return {
"html": "Copy code running in current environment to memory\nInput: <code>destOffset | offset | size</code>\nOutput: -",
"tooltip": "Copy code running in current environment to memory",
"url": "https://www.evm.codes/#39"
};
case "GASPRICE":
return {
"html": "Get price of gas in current environment\nInput: -\nOutput: <code>price</code>",
"tooltip": "Get price of gas in current environment",
"url": "https://www.evm.codes/#3a"
};
case "EXTCODESIZE":
return {
"html": "Get size of an account\u2019s code\nInput: <code>address</code>\nOutput: <code>size</code>",
"tooltip": "Get size of an account\u2019s code",
"url": "https://www.evm.codes/#3b"
};
case "EXTCODECOPY":
return {
"html": "Copy an account\u2019s code to memory\nInput: <code>address | destOffset | offset | size</code>\nOutput: -",
"tooltip": "Copy an account\u2019s code to memory",
"url": "https://www.evm.codes/#3c"
};
case "RETURNDATASIZE":
return {
"html": "Get size of output data from the previous call from the current environment\nInput: -\nOutput: <code>size</code>",
"tooltip": "Get size of output data from the previous call from the current environment",
"url": "https://www.evm.codes/#3d"
};
case "RETURNDATACOPY":
return {
"html": "Copy output data from the previous call to memory\nInput: <code>destOffset | offset | size</code>\nOutput: -",
"tooltip": "Copy output data from the previous call to memory",
"url": "https://www.evm.codes/#3e"
};
case "EXTCODEHASH":
return {
"html": "Get hash of an account\u2019s code\nInput: <code>address</code>\nOutput: <code>hash</code>",
"tooltip": "Get hash of an account\u2019s code",
"url": "https://www.evm.codes/#3f"
};
case "BLOCKHASH":
return {
"html": "Get the hash of one of the 256 most recent complete blocks\nInput: <code>blockNumber</code>\nOutput: <code>hash</code>",
"tooltip": "Get the hash of one of the 256 most recent complete blocks",
"url": "https://www.evm.codes/#40"
};
case "COINBASE":
return {
"html": "Get the block\u2019s beneficiary address\nInput: -\nOutput: <code>address</code>",
"tooltip": "Get the block\u2019s beneficiary address",
"url": "https://www.evm.codes/#41"
};
case "TIMESTAMP":
return {
"html": "Get the block\u2019s timestamp\nInput: -\nOutput: <code>timestamp</code>",
"tooltip": "Get the block\u2019s timestamp",
"url": "https://www.evm.codes/#42"
};
case "NUMBER":
return {
"html": "Get the block\u2019s number\nInput: -\nOutput: <code>blockNumber</code>",
"tooltip": "Get the block\u2019s number",
"url": "https://www.evm.codes/#43"
};
case "DIFFICULTY":
return {
"html": "Get the block\u2019s difficulty\nInput: -\nOutput: <code>difficulty</code>",
"tooltip": "Get the block\u2019s difficulty",
"url": "https://www.evm.codes/#44"
};
case "GASLIMIT":
return {
"html": "Get the block\u2019s gas limit\nInput: -\nOutput: <code>gasLimit</code>",
"tooltip": "Get the block\u2019s gas limit",
"url": "https://www.evm.codes/#45"
};
case "CHAINID":
return {
"html": "Get the chain ID\nInput: -\nOutput: <code>chainId</code>",
"tooltip": "Get the chain ID",
"url": "https://www.evm.codes/#46"
};
case "BASEFEE":
return {
"html": "Get the base fee\nInput: -\nOutput: <code>baseFee</code>",
"tooltip": "Get the base fee",
"url": "https://www.evm.codes/#48"
};
case "POP":
return {
"html": "Remove item from stack\nInput: <code>y</code>\nOutput: -",
"tooltip": "Remove item from stack",
"url": "https://www.evm.codes/#50"
};
case "MLOAD":
return {
"html": "Load word from memory\nInput: <code>offset</code>\nOutput: <code>value</code>",
"tooltip": "Load word from memory",
"url": "https://www.evm.codes/#51"
};
case "MSTORE":
return {
"html": "Save word to memory\nInput: <code>offset | value</code>\nOutput: -",
"tooltip": "Save word to memory",
"url": "https://www.evm.codes/#52"
};
case "MSTORE8":
return {
"html": "Save byte to memory\nInput: <code>offset | value</code>\nOutput: -",
"tooltip": "Save byte to memory",
"url": "https://www.evm.codes/#53"
};
case "SLOAD":
return {
"html": "Load word from storage\nInput: <code>key</code>\nOutput: <code>value</code>",
"tooltip": "Load word from storage",
"url": "https://www.evm.codes/#54"
};
case "SSTORE":
return {
"html": "Save word to storage\nInput: <code>key | value</code>\nOutput: -",
"tooltip": "Save word to storage",
"url": "https://www.evm.codes/#55"
};
case "JUMP":
return {
"html": "Alter the program counter\nInput: <code>counter</code>\nOutput: -",
"tooltip": "Alter the program counter",
"url": "https://www.evm.codes/#56"
};
case "JUMPI":
return {
"html": "Conditionally alter the program counter\nInput: <code>counter | b</code>\nOutput: -",
"tooltip": "Conditionally alter the program counter",
"url": "https://www.evm.codes/#57"
};
case "GETPC":
return {
"html": "Get the value of the program counter prior to the increment corresponding to this instruction\nInput: -\nOutput: <code>counter</code>",
"tooltip": "Get the value of the program counter prior to the increment corresponding to this instruction",
"url": "https://www.evm.codes/#58"
};
case "MSIZE":
return {
"html": "Get the size of active memory in bytes\nInput: -\nOutput: <code>size</code>",
"tooltip": "Get the size of active memory in bytes",
"url": "https://www.evm.codes/#59"
};
case "GAS":
return {
"html": "Get the amount of available gas, including the corresponding reduction for the cost of this instruction\nInput: -\nOutput: <code>gas</code>",
"tooltip": "Get the amount of available gas, including the corresponding reduction for the cost of this instruction",
"url": "https://www.evm.codes/#5a"
};
case "JUMPDEST":
return {
"html": "Mark a valid destination for jumps\nInput: -\nOutput: -",
"tooltip": "Mark a valid destination for jumps",
"url": "https://www.evm.codes/#5b"
};
case "PUSH1":
return {
"html": "Place 1 byte item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 1 byte item on stack",
"url": "https://www.evm.codes/#60"
};
case "PUSH2":
return {
"html": "Place 2 byte item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 2 byte item on stack",
"url": "https://www.evm.codes/#61"
};
case "PUSH3":
return {
"html": "Place 3 byte item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 3 byte item on stack",
"url": "https://www.evm.codes/#62"
};
case "PUSH4":
return {
"html": "Place 4 byte item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 4 byte item on stack",
"url": "https://www.evm.codes/#63"
};
case "PUSH5":
return {
"html": "Place 5 byte item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 5 byte item on stack",
"url": "https://www.evm.codes/#64"
};
case "PUSH6":
return {
"html": "Place 6 byte item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 6 byte item on stack",
"url": "https://www.evm.codes/#65"
};
case "PUSH7":
return {
"html": "Place 7 byte item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 7 byte item on stack",
"url": "https://www.evm.codes/#66"
};
case "PUSH8":
return {
"html": "Place 8 byte item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 8 byte item on stack",
"url": "https://www.evm.codes/#67"
};
case "PUSH9":
return {
"html": "Place 9 byte item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 9 byte item on stack",
"url": "https://www.evm.codes/#68"
};
case "PUSH10":
return {
"html": "Place 10 byte item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 10 byte item on stack",
"url": "https://www.evm.codes/#69"
};
case "PUSH11":
return {
"html": "Place 11 byte item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 11 byte item on stack",
"url": "https://www.evm.codes/#6a"
};
case "PUSH12":
return {
"html": "Place 12 byte item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 12 byte item on stack",
"url": "https://www.evm.codes/#6b"
};
case "PUSH13":
return {
"html": "Place 13 byte item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 13 byte item on stack",
"url": "https://www.evm.codes/#6c"
};
case "PUSH14":
return {
"html": "Place 14 byte item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 14 byte item on stack",
"url": "https://www.evm.codes/#6d"
};
case "PUSH15":
return {
"html": "Place 15 byte item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 15 byte item on stack",
"url": "https://www.evm.codes/#6e"
};
case "PUSH16":
return {
"html": "Place 16 byte item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 16 byte item on stack",
"url": "https://www.evm.codes/#6f"
};
case "PUSH17":
return {
"html": "Place 17 byte item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 17 byte item on stack",
"url": "https://www.evm.codes/#70"
};
case "PUSH18":
return {
"html": "Place 18 byte item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 18 byte item on stack",
"url": "https://www.evm.codes/#71"
};
case "PUSH19":
return {
"html": "Place 19 byte item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 19 byte item on stack",
"url": "https://www.evm.codes/#72"
};
case "PUSH20":
return {
"html": "Place 20 byte item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 20 byte item on stack",
"url": "https://www.evm.codes/#73"
};
case "PUSH21":
return {
"html": "Place 21 byte item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 21 byte item on stack",
"url": "https://www.evm.codes/#74"
};
case "PUSH22":
return {
"html": "Place 22 byte item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 22 byte item on stack",
"url": "https://www.evm.codes/#75"
};
case "PUSH23":
return {
"html": "Place 23 byte item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 23 byte item on stack",
"url": "https://www.evm.codes/#76"
};
case "PUSH24":
return {
"html": "Place 24 byte item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 24 byte item on stack",
"url": "https://www.evm.codes/#77"
};
case "PUSH25":
return {
"html": "Place 25 byte item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 25 byte item on stack",
"url": "https://www.evm.codes/#78"
};
case "PUSH26":
return {
"html": "Place 26 byte item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 26 byte item on stack",
"url": "https://www.evm.codes/#79"
};
case "PUSH27":
return {
"html": "Place 27 byte item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 27 byte item on stack",
"url": "https://www.evm.codes/#7a"
};
case "PUSH28":
return {
"html": "Place 28 byte item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 28 byte item on stack",
"url": "https://www.evm.codes/#7b"
};
case "PUSH29":
return {
"html": "Place 29 byte item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 29 byte item on stack",
"url": "https://www.evm.codes/#7c"
};
case "PUSH30":
return {
"html": "Place 30 byte item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 30 byte item on stack",
"url": "https://www.evm.codes/#7d"
};
case "PUSH31":
return {
"html": "Place 31 byte item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 31 byte item on stack",
"url": "https://www.evm.codes/#7e"
};
case "PUSH32":
return {
"html": "Place 32 byte (full word) item on stack\nInput: -\nOutput: <code>value</code>",
"tooltip": "Place 32 byte (full word) item on stack",
"url": "https://www.evm.codes/#7f"
};
case "DUP1":
return {
"html": "Duplicate 1st stack item\nInput: <code>value</code>\nOutput: <code>value | value</code>",
"tooltip": "Duplicate 1st stack item",
"url": "https://www.evm.codes/#80"
};
case "DUP2":
return {
"html": "Duplicate 2nd stack item\nInput: <code>a | b</code>\nOutput: <code>b | a | b</code>",
"tooltip": "Duplicate 2nd stack item",
"url": "https://www.evm.codes/#81"
};
case "DUP3":
return {
"html": "Duplicate 3rd stack item\nInput: <code>a | b | c</code>\nOutput: <code>c | a | b | c</code>",
"tooltip": "Duplicate 3rd stack item",
"url": "https://www.evm.codes/#82"
};
case "DUP4":
return {
"html": "Duplicate 4th stack item\nInput: <code>... | value</code>\nOutput: <code>value | ... | value</code>",
"tooltip": "Duplicate 4th stack item",
"url": "https://www.evm.codes/#83"
};
case "DUP5":
return {
"html": "Duplicate 5th stack item\nInput: <code>... | value</code>\nOutput: <code>value | ... | value</code>",
"tooltip": "Duplicate 5th stack item",
"url": "https://www.evm.codes/#84"
};
case "DUP6":
return {
"html": "Duplicate 6th stack item\nInput: <code>... | value</code>\nOutput: <code>value | ... | value</code>",
"tooltip": "Duplicate 6th stack item",
"url": "https://www.evm.codes/#85"
};
case "DUP7":
return {
"html": "Duplicate 7th stack item\nInput: <code>... | value</code>\nOutput: <code>value | ... | value</code>",
"tooltip": "Duplicate 7th stack item",
"url": "https://www.evm.codes/#86"
};
case "DUP8":
return {
"html": "Duplicate 8th stack item\nInput: <code>... | value</code>\nOutput: <code>value | ... | value</code>",
"tooltip": "Duplicate 8th stack item",
"url": "https://www.evm.codes/#87"
};
case "DUP9":
return {
"html": "Duplicate 9th stack item\nInput: <code>... | value</code>\nOutput: <code>value | ... | value</code>",
"tooltip": "Duplicate 9th stack item",
"url": "https://www.evm.codes/#88"
};
case "DUP10":
return {
"html": "Duplicate 10th stack item\nInput: <code>... | value</code>\nOutput: <code>value | ... | value</code>",
"tooltip": "Duplicate 10th stack item",
"url": "https://www.evm.codes/#89"
};
case "DUP11":
return {
"html": "Duplicate 11th stack item\nInput: <code>... | value</code>\nOutput: <code>value | ... | value</code>",
"tooltip": "Duplicate 11th stack item",
"url": "https://www.evm.codes/#8a"
};
case "DUP12":
return {
"html": "Duplicate 12th stack item\nInput: <code>... | value</code>\nOutput: <code>value | ... | value</code>",
"tooltip": "Duplicate 12th stack item",
"url": "https://www.evm.codes/#8b"
};
case "DUP13":
return {
"html": "Duplicate 13th stack item\nInput: <code>... | value</code>\nOutput: <code>value | ... | value</code>",
"tooltip": "Duplicate 13th stack item",
"url": "https://www.evm.codes/#8c"
};
case "DUP14":
return {
"html": "Duplicate 14th stack item\nInput: <code>... | value</code>\nOutput: <code>value | ... | value</code>",
"tooltip": "Duplicate 14th stack item",
"url": "https://www.evm.codes/#8d"
};
case "DUP15":
return {
"html": "Duplicate 15th stack item\nInput: <code>... | value</code>\nOutput: <code>value | ... | value</code>",
"tooltip": "Duplicate 15th stack item",
"url": "https://www.evm.codes/#8e"
};
case "DUP16":
return {
"html": "Duplicate 16th stack item\nInput: <code>... | value</code>\nOutput: <code>value | ... | value</code>",
"tooltip": "Duplicate 16th stack item",
"url": "https://www.evm.codes/#8f"
};
case "SWAP1":
return {
"html": "Exchange 1st and 2nd stack items\nInput: <code>a | b</code>\nOutput: <code>b | a</code>",
"tooltip": "Exchange 1st and 2nd stack items",
"url": "https://www.evm.codes/#90"
};
case "SWAP2":
return {
"html": "Exchange 1st and 3rd stack items\nInput: <code>a | b | c</code>\nOutput: <code>c | b | a</code>",
"tooltip": "Exchange 1st and 3rd stack items",
"url": "https://www.evm.codes/#91"
};
case "SWAP3":
return {
"html": "Exchange 1st and 4th stack items\nInput: <code>a | ... | b</code>\nOutput: <code>b | ... | a</code>",
"tooltip": "Exchange 1st and 4th stack items",
"url": "https://www.evm.codes/#92"
};
case "SWAP4":
return {
"html": "Exchange 1st and 5th stack items\nInput: <code>a | ... | b</code>\nOutput: <code>b | ... | a</code>",
"tooltip": "Exchange 1st and 5th stack items",
"url": "https://www.evm.codes/#93"
};
case "SWAP5":
return {
"html": "Exchange 1st and 6th stack items\nInput: <code>a | ... | b</code>\nOutput: <code>b | ... | a</code>",
"tooltip": "Exchange 1st and 6th stack items",
"url": "https://www.evm.codes/#94"
};
case "SWAP6":
return {
"html": "Exchange 1st and 7th stack items\nInput: <code>a | ... | b</code>\nOutput: <code>b | ... | a</code>",
"tooltip": "Exchange 1st and 7th stack items",
"url": "https://www.evm.codes/#95"
};
case "SWAP7":
return {
"html": "Exchange 1st and 8th stack items\nInput: <code>a | ... | b</code>\nOutput: <code>b | ... | a</code>",
"tooltip": "Exchange 1st and 8th stack items",
"url": "https://www.evm.codes/#96"
};
case "SWAP8":
return {
"html": "Exchange 1st and 9th stack items\nInput: <code>a | ... | b</code>\nOutput: <code>b | ... | a</code>",
"tooltip": "Exchange 1st and 9th stack items",
"url": "https://www.evm.codes/#97"
};
case "SWAP9":
return {
"html": "Exchange 1st and 10th stack items\nInput: <code>a | ... | b</code>\nOutput: <code>b | ... | a</code>",
"tooltip": "Exchange 1st and 10th stack items",
"url": "https://www.evm.codes/#98"
};
case "SWAP10":
return {
"html": "Exchange 1st and 11th stack items\nInput: <code>a | ... | b</code>\nOutput: <code>b | ... | a</code>",
"tooltip": "Exchange 1st and 11th stack items",
"url": "https://www.evm.codes/#99"
};
case "SWAP11":
return {
"html": "Exchange 1st and 12th stack items\nInput: <code>a | ... | b</code>\nOutput: <code>b | ... | a</code>",
"tooltip": "Exchange 1st and 12th stack items",
"url": "https://www.evm.codes/#9a"
};
case "SWAP12":
return {
"html": "Exchange 1st and 13th stack items\nInput: <code>a | ... | b</code>\nOutput: <code>b | ... | a</code>",
"tooltip": "Exchange 1st and 13th stack items",
"url": "https://www.evm.codes/#9b"
};
case "SWAP13":
return {
"html": "Exchange 1st and 14th stack items\nInput: <code>a | ... | b</code>\nOutput: <code>b | ... | a</code>",
"tooltip": "Exchange 1st and 14th stack items",
"url": "https://www.evm.codes/#9c"
};
case "SWAP14":
return {
"html": "Exchange 1st and 15th stack items\nInput: <code>a | ... | b</code>\nOutput: <code>b | ... | a</code>",
"tooltip": "Exchange 1st and 15th stack items",
"url": "https://www.evm.codes/#9d"
};
case "SWAP15":
return {
"html": "Exchange 1st and 16th stack items\nInput: <code>a | ... | b</code>\nOutput: <code>b | ... | a</code>",
"tooltip": "Exchange 1st and 16th stack items",
"url": "https://www.evm.codes/#9e"
};
case "SWAP16":
return {
"html": "Exchange 1st and 17th stack items\nInput: <code>a | ... | b</code>\nOutput: <code>b | ... | a</code>",
"tooltip": "Exchange 1st and 17th stack items",
"url": "https://www.evm.codes/#9f"
};
case "LOG0":
return {
"html": "Append log record with no topics\nInput: <code>offset | size</code>\nOutput: -",
"tooltip": "Append log record with no topics",
"url": "https://www.evm.codes/#a0"
};
case "LOG1":
return {
"html": "Append log record with one topic\nInput: <code>offset | size | topic</code>\nOutput: -",
"tooltip": "Append log record with one topic",
"url": "https://www.evm.codes/#a1"
};
case "LOG2":
return {
"html": "Append log record with two topics\nInput: <code>offset | size | topic1 | topic2</code>\nOutput: -",
"tooltip": "Append log record with two topics",
"url": "https://www.evm.codes/#a2"
};
case "LOG3":
return {
"html": "Append log record with three topics\nInput: <code>offset | size | topic1 | topic2 | topic3</code>\nOutput: -",
"tooltip": "Append log record with three topics",
"url": "https://www.evm.codes/#a3"
};
case "LOG4":
return {
"html": "Append log record with four topics\nInput: <code>offset | size | topic1 | topic2 | topic3 | topic4</code>\nOutput: -",
"tooltip": "Append log record with four topics",
"url": "https://www.evm.codes/#a4"
};
case "SLOADBYTES":
return {
"html": "\nInput: -\nOutput: -",
"tooltip": "",
"url": "https://www.evm.codes/#e1"
};
case "SSTOREBYTES":
return {
"html": "\nInput: -\nOutput: -",
"tooltip": "",
"url": "https://www.evm.codes/#e2"
};
case "SSIZE":
return {
"html": "\nInput: -\nOutput: -",
"tooltip": "",
"url": "https://www.evm.codes/#e3"
};
case "CREATE":
return {
"html": "Create a new account with associated code\nInput: <code>value | offset | size</code>\nOutput: <code>address</code>",
"tooltip": "Create a new account with associated code",
"url": "https://www.evm.codes/#f0"
};
case "CALL":
return {
"html": "Message-call into an account\nInput: <code>gas | address | value | argsOffset | argsSize | retOffset | retSize</code>\nOutput: <code>success</code>",
"tooltip": "Message-call into an account",
"url": "https://www.evm.codes/#f1"
};
case "CALLCODE":
return {
"html": "Message-call into this account with alternative account\u2019s code\nInput: <code>gas | address | value | argsOffset | argsSize | retOffset | retSize</code>\nOutput: <code>success</code>",
"tooltip": "Message-call into this account with alternative account\u2019s code",
"url": "https://www.evm.codes/#f2"
};
case "RETURN":
return {
"html": "Halt execution returning output data\nInput: <code>offset | size</code>\nOutput: -",
"tooltip": "Halt execution returning output data",
"url": "https://www.evm.codes/#f3"
};
case "DELEGATECALL":
return {
"html": "Message-call into this account with an alternative account\u2019s code, but persisting the current values for sender and value\nInput: <code>gas | address | argsOffset | argsSize | retOffset | retSize</code>\nOutput: <code>success</code>",
"tooltip": "Message-call into this account with an alternative account\u2019s code, but persisting the current values for sender and value",
"url": "https://www.evm.codes/#f4"
};
case "STATICCALL":
return {
"html": "Static message-call into an account\nInput: <code>gas | address | argsOffset | argsSize | retOffset | retSize</code>\nOutput: <code>success</code>",
"tooltip": "Static message-call into an account",
"url": "https://www.evm.codes/#fa"
};
case "TXEXECGAS":
return {
"html": "\nInput: -\nOutput: -",
"tooltip": "",
"url": "https://www.evm.codes/#fc"
};
case "REVERT":
return {
"html": "Halt execution reverting state changes but returning data and remaining gas\nInput: <code>offset | size</code>\nOutput: -",
"tooltip": "Halt execution reverting state changes but returning data and remaining gas",
"url": "https://www.evm.codes/#fd"
};
case "INVALID":
return {
"html": "Designated invalid instruction\nInput: -\nOutput: -",
"tooltip": "Designated invalid instruction",
"url": "https://www.evm.codes/#fe"
};
}
}