# Opcodes

### OVERVIEW <a href="#overview" id="overview"></a>

This is an updated version of the EVM reference page at [wolflo/evm-opcodes↗](https://github.com/wolflo/evm-opcodes). Also drawn from the Ethereum's [Yellow Paper↗](https://ethereum.github.io/yellowpaper/paper.pdf), the [Jello Paper↗](https://jellopaper.org/evm/), and the [etn-sc](https://github.com/electroneum/electroneum-sc) implementation. This is intended to be an accessible reference, but it is not particularly rigorous. If you want to be certain of correctness and aware of every edge case, using the Jello Paper or a client implementation is advisable.

Looking for an interactive reference? Check out [evm.codes↗](https://www.evm.codes/).

For operations with dynamic gas costs, see [gas.md↗](https://github.com/wolflo/evm-opcodes/blob/main/gas.md).

💡 Quick tip: To view entire lines, use `[shift] + scroll` to scroll horizontally on desktop.

| Stack | Name           |                                                          Gas                                                         | Initial Stack                                    | Resulting Stack                 | Mem / Storage                                                                                      | Notes                                                                                                              |                                                |            |   |
| :---: | -------------- | :------------------------------------------------------------------------------------------------------------------: | ------------------------------------------------ | ------------------------------- | -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------- | ---------- | - |
|   00  | STOP           |                                                           0                                                          |                                                  |                                 |                                                                                                    | halt execution                                                                                                     |                                                |            |   |
|   01  | ADD            |                                                           3                                                          | `a, b`                                           | `a + b`                         |                                                                                                    | (u)int256 addition modulo 2\*\*256                                                                                 |                                                |            |   |
|   02  | MUL            |                                                           5                                                          | `a, b`                                           | `a * b`                         |                                                                                                    | (u)int256 multiplication modulo 2\*\*256                                                                           |                                                |            |   |
|   03  | SUB            |                                                           3                                                          | `a, b`                                           | `a - b`                         |                                                                                                    | (u)int256 addition modulo 2\*\*256                                                                                 |                                                |            |   |
|   04  | DIV            |                                                           5                                                          | `a, b`                                           | `a // b`                        |                                                                                                    | uint256 division                                                                                                   |                                                |            |   |
|   05  | SDIV           |                                                           5                                                          | `a, b`                                           | `a // b`                        |                                                                                                    | int256 division                                                                                                    |                                                |            |   |
|   06  | MOD            |                                                           5                                                          | `a, b`                                           | `a % b`                         |                                                                                                    | uint256 modulus                                                                                                    |                                                |            |   |
|   07  | SMOD           |                                                           5                                                          | `a, b`                                           | `a % b`                         |                                                                                                    | int256 modulus                                                                                                     |                                                |            |   |
|   08  | ADDMOD         |                                                           8                                                          | `a, b, N`                                        | `(a + b) % N`                   |                                                                                                    | (u)int256 addition modulo N                                                                                        |                                                |            |   |
|   09  | MULMOD         |                                                           8                                                          | `a, b, N`                                        | `(a * b) % N`                   |                                                                                                    | (u)int256 multiplication modulo N                                                                                  |                                                |            |   |
|   0A  | EXP            |               [A1(opens in a new tab)↗](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a1-exp)               | `a, b`                                           | `a ** b`                        |                                                                                                    | uint256 exponentiation modulo 2\*\*256                                                                             |                                                |            |   |
|   0B  | SIGNEXTEND     |                                                           5                                                          | `b, x`                                           | `SIGNEXTEND(x, b)`              |                                                                                                    | [sign extend(opens in a new tab)↗](https://wikipedia.org/wiki/Sign_extension) `x` from `(b+1)` bytes to 32 bytes   |                                                |            |   |
| 0C-0F | *invalid*      |                                                                                                                      |                                                  |                                 |                                                                                                    |                                                                                                                    |                                                |            |   |
|   10  | LT             |                                                           3                                                          | `a, b`                                           | `a < b`                         |                                                                                                    | uint256 less-than                                                                                                  |                                                |            |   |
|   11  | GT             |                                                           3                                                          | `a, b`                                           | `a > b`                         |                                                                                                    | uint256 greater-than                                                                                               |                                                |            |   |
|   12  | SLT            |                                                           3                                                          | `a, b`                                           | `a < b`                         |                                                                                                    | int256 less-than                                                                                                   |                                                |            |   |
|   13  | SGT            |                                                           3                                                          | `a, b`                                           | `a > b`                         |                                                                                                    | int256 greater-than                                                                                                |                                                |            |   |
|   14  | EQ             |                                                           3                                                          | `a, b`                                           | `a == b`                        |                                                                                                    | (u)int256 equality                                                                                                 |                                                |            |   |
|   15  | ISZERO         |                                                           3                                                          | `a`                                              | `a == 0`                        |                                                                                                    | (u)int256 iszero                                                                                                   |                                                |            |   |
|   16  | AND            |                                                           3                                                          | `a, b`                                           | `a && b`                        |                                                                                                    | bitwise AND                                                                                                        |                                                |            |   |
|   17  | OR             |                                                           3                                                          | `a, b`                                           | \`a \\                          | \\                                                                                                 | b\`                                                                                                                |                                                | bitwise OR |   |
|   18  | XOR            |                                                           3                                                          | `a, b`                                           | `a ^ b`                         |                                                                                                    | bitwise XOR                                                                                                        |                                                |            |   |
|   19  | NOT            |                                                           3                                                          | `a`                                              | `~a`                            |                                                                                                    | bitwise NOT                                                                                                        |                                                |            |   |
|   1A  | BYTE           |                                                           3                                                          | `i, x`                                           | `(x >> (248 - i * 8)) && 0xFF`  |                                                                                                    | `i`th byte of (u)int256 `x`, from the left                                                                         |                                                |            |   |
|   1B  | SHL            |                                                           3                                                          | `shift, val`                                     | `val << shift`                  |                                                                                                    | shift left                                                                                                         |                                                |            |   |
|   1C  | SHR            |                                                           3                                                          | `shift, val`                                     | `val >> shift`                  |                                                                                                    | logical shift right                                                                                                |                                                |            |   |
|   1D  | SAR            |                                                           3                                                          | `shift, val`                                     | `val >> shift`                  |                                                                                                    | arithmetic shift right                                                                                             |                                                |            |   |
| 1E-1F | *invalid*      |                                                                                                                      |                                                  |                                 |                                                                                                    |                                                                                                                    |                                                |            |   |
|   20  | KECCAK256      |               [A2(opens in a new tab)↗](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a2-sha3)              | `ost, len`                                       | `keccak256(mem[ost:ost+len-1])` |                                                                                                    | keccak256                                                                                                          |                                                |            |   |
| 21-2F | *invalid*      |                                                                                                                      |                                                  |                                 |                                                                                                    |                                                                                                                    |                                                |            |   |
|   30  | ADDRESS        |                                                           2                                                          | `.`                                              | `address(this)`                 |                                                                                                    | address of executing contract                                                                                      |                                                |            |   |
|   31  | BALANCE        | [A5(opens in a new tab)↗](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr`                                           | `addr.balance`                  |                                                                                                    | balance, in wei                                                                                                    |                                                |            |   |
|   32  | ORIGIN         |                                                           2                                                          | `.`                                              | `tx.origin`                     |                                                                                                    | address that originated the tx                                                                                     |                                                |            |   |
|   33  | CALLER         |                                                           2                                                          | `.`                                              | `msg.sender`                    |                                                                                                    | address of msg sender                                                                                              |                                                |            |   |
|   34  | CALLVALUE      |                                                           2                                                          | `.`                                              | `msg.value`                     |                                                                                                    | msg value, in wei                                                                                                  |                                                |            |   |
|   35  | CALLDATALOAD   |                                                           3                                                          | `idx`                                            | `msg.data[idx:idx+32]`          |                                                                                                    | read word from msg data at index `idx`                                                                             |                                                |            |   |
|   36  | CALLDATASIZE   |                                                           2                                                          | `.`                                              | `len(msg.data)`                 |                                                                                                    | length of msg data, in bytes                                                                                       |                                                |            |   |
|   37  | CALLDATACOPY   |         [A3(opens in a new tab)↗](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations)         | `dstOst, ost, len`                               | `.`                             | mem\[dstOst:dstOst+len-1] := msg.data\[ost:ost+len-1]                                              | copy msg data                                                                                                      |                                                |            |   |
|   38  | CODESIZE       |                                                           2                                                          | `.`                                              | `len(this.code)`                |                                                                                                    | length of executing contract's code, in bytes                                                                      |                                                |            |   |
|   39  | CODECOPY       |         [A3(opens in a new tab)↗](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations)         | `dstOst, ost, len`                               | `.`                             |                                                                                                    | mem\[dstOst:dstOst+len-1] := this.code\[ost:ost+len-1]                                                             | copy executing contract's bytecode             |            |   |
|   3A  | GASPRICE       |                                                           2                                                          | `.`                                              | `tx.gasprice`                   |                                                                                                    | gas price of tx, in wei per unit gas [\*\*(opens in a new tab)↗](https://eips.ethereum.org/EIPS/eip-1559#gasprice) |                                                |            |   |
|   3B  | EXTCODESIZE    | [A5(opens in a new tab)↗](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr`                                           | `len(addr.code)`                |                                                                                                    | size of code at addr, in bytes                                                                                     |                                                |            |   |
|   3C  | EXTCODECOPY    |           [A4(opens in a new tab)↗](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a4-extcodecopy)           | `addr, dstOst, ost, len`                         | `.`                             | mem\[dstOst:dstOst+len-1] := addr.code\[ost:ost+len-1]                                             | copy code from `addr`                                                                                              |                                                |            |   |
|   3D  | RETURNDATASIZE |                                                           2                                                          | `.`                                              | `size`                          |                                                                                                    | size of returned data from last external call, in bytes                                                            |                                                |            |   |
|   3E  | RETURNDATACOPY |         [A3(opens in a new tab)↗](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations)         | `dstOst, ost, len`                               | `.`                             | mem\[dstOst:dstOst+len-1] := returndata\[ost:ost+len-1]                                            | copy returned data from last external call                                                                         |                                                |            |   |
|   3F  | EXTCODEHASH    | [A5(opens in a new tab)↗](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr`                                           | `hash`                          |                                                                                                    | hash = addr.exists ? keccak256(addr.code) : 0                                                                      |                                                |            |   |
|   40  | BLOCKHASH      |                                                          20                                                          | `blockNum`                                       | `blockHash(blockNum)`           |                                                                                                    |                                                                                                                    |                                                |            |   |
|   41  | COINBASE       |                                                           2                                                          | `.`                                              | `block.coinbase`                |                                                                                                    | address of miner of current block                                                                                  |                                                |            |   |
|   42  | TIMESTAMP      |                                                           2                                                          | `.`                                              | `block.timestamp`               |                                                                                                    | timestamp of current block                                                                                         |                                                |            |   |
|   43  | NUMBER         |                                                           2                                                          | `.`                                              | `block.number`                  |                                                                                                    | number of current block                                                                                            |                                                |            |   |
|   44  | PREVRANDAO     |                                                           2                                                          | `.`                                              | `randomness beacon`             |                                                                                                    | randomness beacon                                                                                                  |                                                |            |   |
|   45  | GASLIMIT       |                                                           2                                                          | `.`                                              | `block.gaslimit`                |                                                                                                    | gas limit of current block                                                                                         |                                                |            |   |
|   46  | CHAINID        |                                                           2                                                          | `.`                                              | `chain_id`                      |                                                                                                    | push current [chain id(opens in a new tab)↗](https://eips.ethereum.org/EIPS/eip-155) onto stack                    |                                                |            |   |
|   47  | SELFBALANCE    |                                                           5                                                          | `.`                                              | `address(this).balance`         |                                                                                                    | balance of executing contract, in wei                                                                              |                                                |            |   |
|   48  | BASEFEE        |                                                           2                                                          | `.`                                              | `block.basefee`                 |                                                                                                    | base fee of current block                                                                                          |                                                |            |   |
| 49-4F | *invalid*      |                                                                                                                      |                                                  |                                 |                                                                                                    |                                                                                                                    |                                                |            |   |
|   50  | POP            |                                                           2                                                          | `_anon`                                          | `.`                             |                                                                                                    | remove item from top of stack and discard it                                                                       |                                                |            |   |
|   51  | MLOAD          |       3[\*(opens in a new tab)↗](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion)       | `ost`                                            | `mem[ost:ost+32]`               |                                                                                                    | read word from memory at offset `ost`                                                                              |                                                |            |   |
|   52  | MSTORE         |       3[\*(opens in a new tab)↗](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion)       | `ost, val`                                       | `.`                             | mem\[ost:ost+32] := val                                                                            | write a word to memory                                                                                             |                                                |            |   |
|   53  | MSTORE8        |       3[\*(opens in a new tab)↗](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion)       | `ost, val`                                       | `.`                             | mem\[ost] := val && 0xFF                                                                           | write a single byte to memory                                                                                      |                                                |            |   |
|   54  | SLOAD          |              [A6(opens in a new tab)↗](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a6-sload)              | `key`                                            | `storage[key]`                  |                                                                                                    | read word from storage                                                                                             |                                                |            |   |
|   55  | SSTORE         |              [A7(opens in a new tab)↗](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a7-sstore)             | `key, val`                                       | `.`                             | storage\[key] := val                                                                               | write word to storage                                                                                              |                                                |            |   |
|   56  | JUMP           |                                                           8                                                          | `dst`                                            | `.`                             |                                                                                                    | `$pc := dst` mark that `pc` is only assigned if `dst` is a valid jumpdest                                          |                                                |            |   |
|   57  | JUMPI          |                                                          10                                                          | `dst, condition`                                 | `.`                             |                                                                                                    | `$pc := condition ? dst : $pc + 1`                                                                                 |                                                |            |   |
|   58  | PC             |                                                           2                                                          | `.`                                              | `$pc`                           |                                                                                                    | program counter                                                                                                    |                                                |            |   |
|   59  | MSIZE          |                                                           2                                                          | `.`                                              | `len(mem)`                      |                                                                                                    | size of memory in current execution context, in bytes                                                              |                                                |            |   |
|   5A  | GAS            |                                                           2                                                          | `.`                                              | `gasRemaining`                  |                                                                                                    |                                                                                                                    |                                                |            |   |
|   5B  | JUMPDEST       |                                                           1                                                          |                                                  |                                 | mark valid jump destination                                                                        | a valid jump destination for example a jump destination not inside the push data                                   |                                                |            |   |
| 5C-5E | *invalid*      |                                                                                                                      |                                                  |                                 |                                                                                                    |                                                                                                                    |                                                |            |   |
|   5F  | PUSH0          |                                                           2                                                          | `.`                                              | `uint8`                         |                                                                                                    | push the constant value 0 onto stack                                                                               |                                                |            |   |
|   60  | PUSH1          |                                                           3                                                          | `.`                                              | `uint8`                         |                                                                                                    | push 1-byte value onto stack                                                                                       |                                                |            |   |
|   61  | PUSH2          |                                                           3                                                          | `.`                                              | `uint16`                        |                                                                                                    | push 2-byte value onto stack                                                                                       |                                                |            |   |
|   62  | PUSH3          |                                                           3                                                          | `.`                                              | `uint24`                        |                                                                                                    | push 3-byte value onto stack                                                                                       |                                                |            |   |
|   63  | PUSH4          |                                                           3                                                          | `.`                                              | `uint32`                        |                                                                                                    | push 4-byte value onto stack                                                                                       |                                                |            |   |
|   64  | PUSH5          |                                                           3                                                          | `.`                                              | `uint40`                        |                                                                                                    | push 5-byte value onto stack                                                                                       |                                                |            |   |
|   65  | PUSH6          |                                                           3                                                          | `.`                                              | `uint48`                        |                                                                                                    | push 6-byte value onto stack                                                                                       |                                                |            |   |
|   66  | PUSH7          |                                                           3                                                          | `.`                                              | `uint56`                        |                                                                                                    | push 7-byte value onto stack                                                                                       |                                                |            |   |
|   67  | PUSH8          |                                                           3                                                          | `.`                                              | `uint64`                        |                                                                                                    | push 8-byte value onto stack                                                                                       |                                                |            |   |
|   68  | PUSH9          |                                                           3                                                          | `.`                                              | `uint72`                        |                                                                                                    | push 9-byte value onto stack                                                                                       |                                                |            |   |
|   69  | PUSH10         |                                                           3                                                          | `.`                                              | `uint80`                        |                                                                                                    | push 10-byte value onto stack                                                                                      |                                                |            |   |
|   6A  | PUSH11         |                                                           3                                                          | `.`                                              | `uint88`                        |                                                                                                    | push 11-byte value onto stack                                                                                      |                                                |            |   |
|   6B  | PUSH12         |                                                           3                                                          | `.`                                              | `uint96`                        |                                                                                                    | push 12-byte value onto stack                                                                                      |                                                |            |   |
|   6C  | PUSH13         |                                                           3                                                          | `.`                                              | `uint104`                       |                                                                                                    | push 13-byte value onto stack                                                                                      |                                                |            |   |
|   6D  | PUSH14         |                                                           3                                                          | `.`                                              | `uint112`                       |                                                                                                    | push 14-byte value onto stack                                                                                      |                                                |            |   |
|   6E  | PUSH15         |                                                           3                                                          | `.`                                              | `uint120`                       |                                                                                                    | push 15-byte value onto stack                                                                                      |                                                |            |   |
|   6F  | PUSH16         |                                                           3                                                          | `.`                                              | `uint128`                       |                                                                                                    | push 16-byte value onto stack                                                                                      |                                                |            |   |
|   70  | PUSH17         |                                                           3                                                          | `.`                                              | `uint136`                       |                                                                                                    | push 17-byte value onto stack                                                                                      |                                                |            |   |
|   71  | PUSH18         |                                                           3                                                          | `.`                                              | `uint144`                       |                                                                                                    | push 18-byte value onto stack                                                                                      |                                                |            |   |
|   72  | PUSH19         |                                                           3                                                          | `.`                                              | `uint152`                       |                                                                                                    | push 19-byte value onto stack                                                                                      |                                                |            |   |
|   73  | PUSH20         |                                                           3                                                          | `.`                                              | `uint160`                       |                                                                                                    | push 20-byte value onto stack                                                                                      |                                                |            |   |
|   74  | PUSH21         |                                                           3                                                          | `.`                                              | `uint168`                       |                                                                                                    | push 21-byte value onto stack                                                                                      |                                                |            |   |
|   75  | PUSH22         |                                                           3                                                          | `.`                                              | `uint176`                       |                                                                                                    | push 22-byte value onto stack                                                                                      |                                                |            |   |
|   76  | PUSH23         |                                                           3                                                          | `.`                                              | `uint184`                       |                                                                                                    | push 23-byte value onto stack                                                                                      |                                                |            |   |
|   77  | PUSH24         |                                                           3                                                          | `.`                                              | `uint192`                       |                                                                                                    | push 24-byte value onto stack                                                                                      |                                                |            |   |
|   78  | PUSH25         |                                                           3                                                          | `.`                                              | `uint200`                       |                                                                                                    | push 25-byte value onto stack                                                                                      |                                                |            |   |
|   79  | PUSH26         |                                                           3                                                          | `.`                                              | `uint208`                       |                                                                                                    | push 26-byte value onto stack                                                                                      |                                                |            |   |
|   7A  | PUSH27         |                                                           3                                                          | `.`                                              | `uint216`                       |                                                                                                    | push 27-byte value onto stack                                                                                      |                                                |            |   |
|   7B  | PUSH28         |                                                           3                                                          | `.`                                              | `uint224`                       |                                                                                                    | push 28-byte value onto stack                                                                                      |                                                |            |   |
|   7C  | PUSH29         |                                                           3                                                          | `.`                                              | `uint232`                       |                                                                                                    | push 29-byte value onto stack                                                                                      |                                                |            |   |
|   7D  | PUSH30         |                                                           3                                                          | `.`                                              | `uint240`                       |                                                                                                    | push 30-byte value onto stack                                                                                      |                                                |            |   |
|   7E  | PUSH31         |                                                           3                                                          | `.`                                              | `uint248`                       |                                                                                                    | push 31-byte value onto stack                                                                                      |                                                |            |   |
|   7F  | PUSH32         |                                                           3                                                          | `.`                                              | `uint256`                       |                                                                                                    | push 32-byte value onto stack                                                                                      |                                                |            |   |
|   80  | DUP1           |                                                           3                                                          | `a`                                              | `a, a`                          |                                                                                                    | clone 1st value on stack                                                                                           |                                                |            |   |
|   81  | DUP2           |                                                           3                                                          | `_, a`                                           | `a, _, a`                       |                                                                                                    | clone 2nd value on stack                                                                                           |                                                |            |   |
|   82  | DUP3           |                                                           3                                                          | `_, _, a`                                        | `a, _, _, a`                    |                                                                                                    | clone 3rd value on stack                                                                                           |                                                |            |   |
|   83  | DUP4           |                                                           3                                                          | `_, _, _, a`                                     | `a, _, _, _, a`                 |                                                                                                    | clone 4th value on stack                                                                                           |                                                |            |   |
|   84  | DUP5           |                                                           3                                                          | `..., a`                                         | `a, ..., a`                     |                                                                                                    | clone 5th value on stack                                                                                           |                                                |            |   |
|   85  | DUP6           |                                                           3                                                          | `..., a`                                         | `a, ..., a`                     |                                                                                                    | clone 6th value on stack                                                                                           |                                                |            |   |
|   86  | DUP7           |                                                           3                                                          | `..., a`                                         | `a, ..., a`                     |                                                                                                    | clone 7th value on stack                                                                                           |                                                |            |   |
|   87  | DUP8           |                                                           3                                                          | `..., a`                                         | `a, ..., a`                     |                                                                                                    | clone 8th value on stack                                                                                           |                                                |            |   |
|   88  | DUP9           |                                                           3                                                          | `..., a`                                         | `a, ..., a`                     |                                                                                                    | clone 9th value on stack                                                                                           |                                                |            |   |
|   89  | DUP10          |                                                           3                                                          | `..., a`                                         | `a, ..., a`                     |                                                                                                    | clone 10th value on stack                                                                                          |                                                |            |   |
|   8A  | DUP11          |                                                           3                                                          | `..., a`                                         | `a, ..., a`                     |                                                                                                    | clone 11th value on stack                                                                                          |                                                |            |   |
|   8B  | DUP12          |                                                           3                                                          | `..., a`                                         | `a, ..., a`                     |                                                                                                    | clone 12th value on stack                                                                                          |                                                |            |   |
|   8C  | DUP13          |                                                           3                                                          | `..., a`                                         | `a, ..., a`                     |                                                                                                    | clone 13th value on stack                                                                                          |                                                |            |   |
|   8D  | DUP14          |                                                           3                                                          | `..., a`                                         | `a, ..., a`                     |                                                                                                    | clone 14th value on stack                                                                                          |                                                |            |   |
|   8E  | DUP15          |                                                           3                                                          | `..., a`                                         | `a, ..., a`                     |                                                                                                    | clone 15th value on stack                                                                                          |                                                |            |   |
|   8F  | DUP16          |                                                           3                                                          | `..., a`                                         | `a, ..., a`                     |                                                                                                    | clone 16th value on stack                                                                                          |                                                |            |   |
|   90  | SWAP1          |                                                           3                                                          | `a, b`                                           | `b, a`                          |                                                                                                    |                                                                                                                    |                                                |            |   |
|   91  | SWAP2          |                                                           3                                                          | `a, _, b`                                        | `b, _, a`                       |                                                                                                    |                                                                                                                    |                                                |            |   |
|   92  | SWAP3          |                                                           3                                                          | `a, _, _, b`                                     | `b, _, _, a`                    |                                                                                                    |                                                                                                                    |                                                |            |   |
|   93  | SWAP4          |                                                           3                                                          | `a, _, _, _, b`                                  | `b, _, _, _, a`                 |                                                                                                    |                                                                                                                    |                                                |            |   |
|   94  | SWAP5          |                                                           3                                                          | `a, ..., b`                                      | `b, ..., a`                     |                                                                                                    |                                                                                                                    |                                                |            |   |
|   95  | SWAP6          |                                                           3                                                          | `a, ..., b`                                      | `b, ..., a`                     |                                                                                                    |                                                                                                                    |                                                |            |   |
|   96  | SWAP7          |                                                           3                                                          | `a, ..., b`                                      | `b, ..., a`                     |                                                                                                    |                                                                                                                    |                                                |            |   |
|   97  | SWAP8          |                                                           3                                                          | `a, ..., b`                                      | `b, ..., a`                     |                                                                                                    |                                                                                                                    |                                                |            |   |
|   98  | SWAP9          |                                                           3                                                          | `a, ..., b`                                      | `b, ..., a`                     |                                                                                                    |                                                                                                                    |                                                |            |   |
|   99  | SWAP10         |                                                           3                                                          | `a, ..., b`                                      | `b, ..., a`                     |                                                                                                    |                                                                                                                    |                                                |            |   |
|   9A  | SWAP11         |                                                           3                                                          | `a, ..., b`                                      | `b, ..., a`                     |                                                                                                    |                                                                                                                    |                                                |            |   |
|   9B  | SWAP12         |                                                           3                                                          | `a, ..., b`                                      | `b, ..., a`                     |                                                                                                    |                                                                                                                    |                                                |            |   |
|   9C  | SWAP13         |                                                           3                                                          | `a, ..., b`                                      | `b, ..., a`                     |                                                                                                    |                                                                                                                    |                                                |            |   |
|   9D  | SWAP14         |                                                           3                                                          | `a, ..., b`                                      | `b, ..., a`                     |                                                                                                    |                                                                                                                    |                                                |            |   |
|   9E  | SWAP15         |                                                           3                                                          | `a, ..., b`                                      | `b, ..., a`                     |                                                                                                    |                                                                                                                    |                                                |            |   |
|   9F  | SWAP16         |                                                           3                                                          | `a, ..., b`                                      | `b, ..., a`                     |                                                                                                    |                                                                                                                    |                                                |            |   |
|   A0  | LOG0           |          [A8(opens in a new tab)↗](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations)         | `ost, len`                                       | `.`                             |                                                                                                    | LOG0(memory\[ost:ost+len-1])                                                                                       |                                                |            |   |
|   A1  | LOG1           |          [A8(opens in a new tab)↗](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations)         | `ost, len, topic0`                               | `.`                             |                                                                                                    | LOG1(memory\[ost:ost+len-1], topic0)                                                                               |                                                |            |   |
|   A2  | LOG2           |          [A8(opens in a new tab)↗](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations)         | `ost, len, topic0, topic1`                       | `.`                             |                                                                                                    | LOG1(memory\[ost:ost+len-1], topic0, topic1)                                                                       |                                                |            |   |
|   A3  | LOG3           |          [A8(opens in a new tab)↗](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations)         | `ost, len, topic0, topic1, topic2`               | `.`                             |                                                                                                    | LOG1(memory\[ost:ost+len-1], topic0, topic1, topic2)                                                               |                                                |            |   |
|   A4  | LOG4           |          [A8(opens in a new tab)↗](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations)         | `ost, len, topic0, topic1, topic2, topic3`       | `.`                             |                                                                                                    | LOG1(memory\[ost:ost+len-1], topic0, topic1, topic2, topic3)                                                       |                                                |            |   |
| A5-EF | *invalid*      |                                                                                                                      |                                                  |                                 |                                                                                                    |                                                                                                                    |                                                |            |   |
|   F0  | CREATE         |        [A9(opens in a new tab)↗](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations)        | `val, ost, len`                                  | `addr`                          |                                                                                                    | addr = keccak256(rlp(\[address(this), this.nonce]))                                                                |                                                |            |   |
|   F1  | CALL           |         [AA(opens in a new tab)↗](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations)         | `gas, addr, val, argOst, argLen, retOst, retLen` | `success`                       | mem\[retOst:retOst+retLen-1] := returndata                                                         |                                                                                                                    |                                                |            |   |
|   F2  | CALLCODE       |         [AA(opens in a new tab)↗](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations)         | `gas, addr, val, argOst, argLen, retOst, retLen` | `success`                       | mem\[retOst:retOst+retLen-1] = returndata                                                          | same as DELEGATECALL, but does not propagate original msg.sender and msg.value                                     |                                                |            |   |
|   F3  | RETURN         |       0[\*(opens in a new tab)↗](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion)       | `ost, len`                                       | `.`                             |                                                                                                    | return mem\[ost:ost+len-1]                                                                                         |                                                |            |   |
|   F4  | DELEGATECALL   |         [AA(opens in a new tab)↗](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations)         | `gas, addr, argOst, argLen, retOst, retLen`      | `success`                       | mem\[retOst:retOst+retLen-1] := returndata                                                         |                                                                                                                    |                                                |            |   |
|   F5  | CREATE2        |        [A9(opens in a new tab)↗](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations)        | `val, ost, len, salt`                            | `addr`                          |                                                                                                    | addr = keccak256(0xff ++ address(this) ++ salt ++ keccak256(mem\[ost:ost+len-1]))\[12:]                            |                                                |            |   |
| F6-F9 | *invalid*      |                                                                                                                      |                                                  |                                 |                                                                                                    |                                                                                                                    |                                                |            |   |
|   FA  | STATICCALL     |         [AA(opens in a new tab)↗](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations)         | `gas, addr, argOst, argLen, retOst, retLen`      | `success`                       | mem\[retOst:retOst+retLen-1] := returndata                                                         |                                                                                                                    |                                                |            |   |
| FB-FC | *invalid*      |                                                                                                                      |                                                  |                                 |                                                                                                    |                                                                                                                    |                                                |            |   |
|   FD  | REVERT         |       0[\*(opens in a new tab)↗](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion)       | `ost, len`                                       | `.`                             |                                                                                                    | revert(mem\[ost:ost+len-1])                                                                                        |                                                |            |   |
|   FE  | INVALID        |             [AF(opens in a new tab)↗](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#af-invalid)             |                                                  |                                 | designated invalid opcode - [EIP-141(opens in a new tab)↗](https://eips.ethereum.org/EIPS/eip-141) |                                                                                                                    |                                                |            |   |
|   FF  | SELFDESTRUCT   |           [AB(opens in a new tab)↗](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#ab-selfdestruct)          | `addr`                                           | `.`                             |                                                                                                    |                                                                                                                    | destroy contract and sends all funds to `addr` |            |   |

<br>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developer.electroneum.com/foundational-topics/electroneum-virtual-machine-evm/opcodes.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
