EVM için işlem kodları
Sayfanın son güncellenmesi: 11 Eylül 2025
Genel Bakış
Bu EVM referans sayfasının wolflo/evm-opcodesopens in a new tab güncellenmiş bir versiyonudur. Ayrıca Sarı Kağıtopens in a new tab'tan, Jello Kağıtopens in a new tab'tan ve gethopens in a new tab uygulamasından alınmıştır. Bunun erişilebilir bir referans olması amaçlanmıştır, ancak özellikle net değildir. Eğer doğruluktan emin olmak ve her kenar durumundan haberdar olmak istiyorsanız, Jello Kağıdı veya bir müşteri uygulaması kullanmanız tavsiye edilir.
İnteraktif bir referans mı arıyorsunuz? Göz atın: evm.codesopens in a new tab.
Değişken gaz ücretleri ile ilgili operasyonlar için bkz. gas.mdopens in a new tab.
💡 Hızlı ipucu: Tam satırları görmek istiyorsanız, masaüstünde yatay olarak kaydırmak için [shift] + kaydırmayı kullanın.
| Yığın | İsim | Gaz | Başlangıç Yığını | Sonuç Yığını | Bellek/Depolama | Notlar |
|---|---|---|---|---|---|---|
| 00 | STOP | 0 | halt execution | |||
| 01 | EKLE | 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 | ALT | 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 | A1opens in a new tab | a, b | a ** b | uint256 exponentiation modulo 2**256 | |
| 0B | SIGNEXTEND | 5 | b, x | SIGNEXTEND(x, b) | sign extendopens in a new tab 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 | ith 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 | A2opens in a new tab | ost, len | keccak256(mem[ost:ost+len-1]) | keccak256 | |
| 21-2F | invalid | |||||
| 30 | ADDRESS | 2 | . | address(this) | address of executing contract | |
| 31 | BALANCE | A5opens in a new tab | 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 | A3opens in a new tab | 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 | A3opens in a new tab | dstOst, ost, len | . | mem[dstOst:dstOst+len-1] := this.code[ost:ost+len-1] | |
| 3A | GASPRICE | 2 | . | tx.gasprice | gas price of tx, in wei per unit gas **opens in a new tab | |
| 3B | EXTCODESIZE | A5opens in a new tab | addr | len(addr.code) | size of code at addr, in bytes | |
| 3C | EXTCODECOPY | A4opens in a new tab | 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 | A3opens in a new tab | dstOst, ost, len | . | mem[dstOst:dstOst+len-1] := returndata[ost:ost+len-1] | copy returned data from last external call |
| 3F | EXTCODEHASH | A5opens in a new tab | addr | karma | hash = addr.exists ? keccak256(addr.code) : 0 | |
| 40 | BLOCKHASH | 20 | blockNum | blockHash(blockNum) | ||
| 41 | COINBASE | 2 | . | block.coinbase | mevcut bloğu önerenin adresi | |
| 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 idopens in a new tab 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 | BLOBHASH | 3 | idx | tx.blob_versioned_hashes[idx] | EIP-4844opens in a new tab | |
| 4A | BLOBBASEFEE | 2 | . | block.blobbasefee | blob base fee of current block (EIP-7516opens in a new tab) | |
| 4B-4F | invalid | |||||
| 50 | POP | 2 | _anon | . | remove item from top of stack and discard it | |
| 51 | MLOAD | 3*opens in a new tab | ost | mem[ost:ost+32] | read word from memory at offset ost | |
| 52 | MSTORE | 3*opens in a new tab | ost, val | . | mem[ost:ost+32] := val | write a word to memory |
| 53 | MSTORE8 | 3*opens in a new tab | ost, val | . | mem[ost] := val && 0xFF | write a single byte to memory |
| 54 | SLOAD | A6opens in a new tab | key | storage[key] | read word from storage | |
| 55 | SSTORE | A7opens in a new tab | 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 | TLOAD | 100 | key | tstorage[key] | read word from transient storage (EIP-1153opens in a new tab) | |
| 5D | TSTORE | 100 | key, val | . | tstorage[key] := val | write word to transient storage (EIP-1153opens in a new tab) |
| 5E | MCOPY | 3+3*words+A0opens in a new tab | dstOst, ost, len | . | mem[dstOst] := mem[ost:ost+len] | copy memory from one area to another (EIP-5656opens in a new tab) |
| 5F | PUSH0 | 2 | . | uint8 | değişmez değer 0'ı yığına it | |
| 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 | A8opens in a new tab | ost, len | . | LOG0(memory[ost:ost+len-1]) | |
| A1 | LOG1 | A8opens in a new tab | ost, len, topic0 | . | LOG1(memory[ost:ost+len-1], topic0) | |
| A2 | LOG2 | A8opens in a new tab | ost, len, topic0, topic1 | . | LOG2(memory[ost:ost+len-1], topic0, topic1) | |
| A3 | LOG3 | A8opens in a new tab | ost, len, topic0, topic1, topic2 | . | LOG3(memory[ost:ost+len-1], topic0, topic1, topic2) | |
| A4 | LOG4 | A8opens in a new tab | ost, len, topic0, topic1, topic2, topic3 | . | LOG4(memory[ost:ost+len-1], topic0, topic1, topic2, topic3) | |
| A5-EF | invalid | |||||
| F0 | CREATE | A9opens in a new tab | val, ost, len | addr | addr = keccak256(rlp([address(this), this.nonce])) | |
| F1 | CALL | AAopens in a new tab | gas, addr, val, argOst, argLen, retOst, retLen | success | mem[retOst:retOst+retLen-1] := returndata | |
| F2 | CALLCODE | AAopens in a new tab | 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 | ost, len | . | return mem[ost:ost+len-1] | |
| F4 | DELEGATECALL | AAopens in a new tab | gas, addr, argOst, argLen, retOst, retLen | success | mem[retOst:retOst+retLen-1] := returndata | |
| F5 | CREATE2 | A9opens in a new tab | val, ost, len, salt | addr | addr = keccak256(0xff ++ address(this) ++ salt ++ keccak256(mem[ost:ost+len-1]))[12:] | |
| F6-F9 | invalid | |||||
| FA | STATICCALL | AAopens in a new tab | gas, addr, argOst, argLen, retOst, retLen | success | mem[retOst:retOst+retLen-1] := returndata | |
| FB-FC | invalid | |||||
| FD | REVERT | 0*opens in a new tab | ost, len | . | revert(mem[ost:ost+len-1]) | |
| FE | INVALID | AFopens in a new tab | designated invalid opcode - EIP-141opens in a new tab | |||
| FF | SELFDESTRUCT | ABopens in a new tab | addr | . | sends all ETH to addr; if executed in the same transaction as a contract was created it destroys the contract |