EVM کے لیے Opcodes
صفحہ کی آخری اپ ڈیٹ: 11 ستمبر، 2025
جائزہ
یہ wolflo/evm-opcodes (opens in a new tab) پر موجود EVM حوالہ صفحہ کا ایک اپ ڈیٹ شدہ ورژن ہے۔ اسے Yellow Paper (opens in a new tab)، Jello Paper (opens in a new tab)، اور geth (opens in a new tab) کے نفاذ سے بھی اخذ کیا گیا ہے۔ اس کا مقصد ایک قابل رسائی حوالہ فراہم کرنا ہے، لیکن یہ خاص طور پر سخت نہیں ہے۔ اگر آپ درستگی کا یقین کرنا چاہتے ہیں اور ہر ایج کیس (edge case) سے آگاہ ہونا چاہتے ہیں، تو Jello Paper یا کلائنٹ کے نفاذ کا استعمال کرنا مناسب ہے۔
کیا آپ ایک انٹرایکٹو حوالہ تلاش کر رہے ہیں؟ evm.codes (opens in a new tab) دیکھیں۔
متحرک گیس لاگت والے آپریشنز کے لیے، gas.md (opens in a new tab) دیکھیں۔
💡 فوری مشورہ: پوری لائنیں دیکھنے کے لیے، ڈیسک ٹاپ پر افقی طور پر سکرول کرنے کے لیے [shift] + scroll کا استعمال کریں۔
| اسٹیک | نام | گیس | ابتدائی اسٹیک | نتیجہ خیز اسٹیک | میموری / اسٹوریج | نوٹس |
|---|---|---|---|---|---|---|
| 00 | STOP | 0 | عملدرآمد روکیں | |||
| 01 | ADD | 3 | a, b | a + b | (u)int256 جمع ماڈیولو 2\*\*256 | |
| 02 | MUL | 5 | a, b | a * b | (u)int256 ضرب ماڈیولو 2\*\*256 | |
| 03 | SUB | 3 | a, b | a - b | (u)int256 تفریق ماڈیولو 2\*\*256 | |
| 04 | DIV | 5 | a, b | a // b | uint256 تقسیم | |
| 05 | SDIV | 5 | a, b | a // b | int256 تقسیم | |
| 06 | MOD | 5 | a, b | a % b | uint256 ماڈیولس | |
| 07 | SMOD | 5 | a, b | a % b | int256 ماڈیولس | |
| 08 | ADDMOD | 8 | a, b, N | (a + b) % N | (u)int256 جمع ماڈیولو N | |
| 09 | MULMOD | 8 | a, b, N | (a * b) % N | (u)int256 ضرب ماڈیولو N | |
| 0A | EXP | A1 (opens in a new tab) | a, b | a ** b | uint256 قوت نما ماڈیولو 2\*\*256 | |
| 0B | SIGNEXTEND | 5 | b, x | SIGNEXTEND(x, b) | x کو (b+1) بائٹس سے 32 بائٹس تک سائن ایکسٹینڈ (opens in a new tab) کریں | |
| 0C-0F | غیر معتبر | |||||
| 10 | LT | 3 | a, b | a < b | uint256 اس سے کم | |
| 11 | GT | 3 | a, b | a > b | uint256 اس سے زیادہ | |
| 12 | SLT | 3 | a, b | a < b | int256 اس سے کم | |
| 13 | SGT | 3 | a, b | a > b | int256 اس سے زیادہ | |
| 14 | EQ | 3 | a, b | a == b | (u)int256 برابری | |
| 15 | ISZERO | 3 | a | a == 0 | (u)int256 صفر ہے | |
| 16 | AND | 3 | a, b | a && b | بٹ وائز AND | |
| 17 | OR | 3 | a, b | a || b | بٹ وائز OR | |
| 18 | XOR | 3 | a, b | a ^ b | بٹ وائز XOR | |
| 19 | NOT | 3 | a | ~a | بٹ وائز NOT | |
| 1A | BYTE | 3 | i, x | (x >> (248 - i * 8)) && 0xFF | بائیں طرف سے، (u)int256 x کا iواں بائٹ | |
| 1B | SHL | 3 | shift, val | val << shift | بائیں شفٹ کریں | |
| 1C | SHR | 3 | shift, val | val >> shift | منطقی دائیں شفٹ | |
| 1D | SAR | 3 | shift, val | val >> shift | حسابی دائیں شفٹ | |
| 1E-1F | غیر معتبر | |||||
| 20 | KECCAK256 | A2 (opens in a new tab) | ost, len | keccak256(mem[ost:ost+len-1]) | keccak256 | |
| 21-2F | غیر معتبر | |||||
| 30 | ADDRESS | 2 | . | address(this) | عملدرآمد کرنے والے کنٹریکٹ کا ایڈریس | |
| 31 | BALANCE | A5 (opens in a new tab) | addr | addr.balance | بیلنس، wei میں | |
| 32 | ORIGIN | 2 | . | tx.origin | وہ ایڈریس جس نے tx شروع کیا | |
| 33 | CALLER | 2 | . | msg.sender | msg بھیجنے والے کا ایڈریس | |
| 34 | CALLVALUE | 2 | . | msg.value | msg کی ویلیو، wei میں | |
| 35 | CALLDATALOAD | 3 | idx | msg.data[idx:idx+32] | انڈیکس idx پر msg ڈیٹا سے ورڈ پڑھیں | |
| 36 | CALLDATASIZE | 2 | . | len(msg.data) | msg ڈیٹا کی لمبائی، بائٹس میں | |
| 37 | CALLDATACOPY | A3 (opens in a new tab) | dstOst, ost, len | . | mem[dstOst:dstOst+len-1] := msg.data[ost:ost+len-1] | msg ڈیٹا کاپی کریں |
| 38 | CODESIZE | 2 | . | len(this.code) | عملدرآمد کرنے والے کنٹریکٹ کے کوڈ کی لمبائی، بائٹس میں | |
| 39 | CODECOPY | A3 (opens in a new tab) | dstOst, ost, len | . | mem[dstOst:dstOst+len-1] := this.code[ost:ost+len-1] | |
| 3A | GASPRICE | 2 | . | tx.gasprice | tx کی گیس کی قیمت، wei فی یونٹ گیس میں ** (opens in a new tab) | |
| 3B | EXTCODESIZE | A5 (opens in a new tab) | addr | len(addr.code) | addr پر کوڈ کا سائز، بائٹس میں | |
| 3C | EXTCODECOPY | A4 (opens in a new tab) | addr, dstOst, ost, len | . | mem[dstOst:dstOst+len-1] := addr.code[ost:ost+len-1] | addr سے کوڈ کاپی کریں |
| 3D | RETURNDATASIZE | 2 | . | size | آخری بیرونی کال سے واپس کیے گئے ڈیٹا کا سائز، بائٹس میں | |
| 3E | RETURNDATACOPY | A3 (opens in a new tab) | dstOst, ost, len | . | mem[dstOst:dstOst+len-1] := returndata[ost:ost+len-1] | آخری بیرونی کال سے واپس کیا گیا ڈیٹا کاپی کریں |
| 3F | EXTCODEHASH | A5 (opens in a new tab) | addr | hash | hash = addr.exists ? keccak256(addr.code) : 0 | |
| 40 | BLOCKHASH | 20 | blockNum | blockHash(blockNum) | ||
| 41 | COINBASE | 2 | . | block.coinbase | موجودہ بلاک کے تجویز کنندہ کا ایڈریس | |
| 42 | TIMESTAMP | 2 | . | block.timestamp | موجودہ بلاک کا ٹائم اسٹیمپ | |
| 43 | NUMBER | 2 | . | block.number | موجودہ بلاک کا نمبر | |
| 44 | PREVRANDAO | 2 | . | randomness beacon | رینڈمنس بیکن | |
| 45 | GASLIMIT | 2 | . | block.gaslimit | موجودہ بلاک کی گیس کی حد | |
| 46 | CHAINID | 2 | . | chain_id | موجودہ چین آئی ڈی (opens in a new tab) کو اسٹیک پر پش کریں | |
| 47 | SELFBALANCE | 5 | . | address(this).balance | عملدرآمد کرنے والے کنٹریکٹ کا بیلنس، wei میں | |
| 48 | BASEFEE | 2 | . | block.basefee | موجودہ بلاک کی بنیادی فیس | |
| 49 | BLOBHASH | 3 | idx | tx.blob_versioned_hashes[idx] | EIP-4844 (opens in a new tab) | |
| 4A | BLOBBASEFEE | 2 | . | block.blobbasefee | موجودہ بلاک کی بلاب بیس فیس (EIP-7516 (opens in a new tab)) | |
| 4B-4F | غیر معتبر | |||||
| 50 | POP | 2 | _anon | . | اسٹیک کے اوپری حصے سے آئٹم کو ہٹائیں اور اسے ضائع کریں | |
| 51 | MLOAD | 3* (opens in a new tab) | ost | mem[ost:ost+32] | آفسیٹ ost پر میموری سے ورڈ پڑھیں | |
| 52 | MSTORE | 3* (opens in a new tab) | ost, val | . | mem[ost:ost+32] := val | میموری میں ایک ورڈ لکھیں |
| 53 | MSTORE8 | 3* (opens in a new tab) | ost, val | . | mem[ost] := val && 0xFF | میموری میں ایک بائٹ لکھیں |
| 54 | SLOAD | A6 (opens in a new tab) | key | storage[key] | اسٹوریج سے ورڈ پڑھیں | |
| 55 | SSTORE | A7 (opens in a new tab) | key, val | . | storage[key] := val | اسٹوریج میں ورڈ لکھیں |
| 56 | JUMP | 8 | dst | . | $pc := dst نشان زد کریں کہ pc صرف اسی صورت میں تفویض کیا جاتا ہے جب dst ایک درست jumpdest ہو | |
| 57 | JUMPI | 10 | dst, condition | . | $pc := condition ? dst : $pc + 1 | |
| 58 | PC | 2 | . | $pc | پروگرام کاؤنٹر | |
| 59 | MSIZE | 2 | . | len(mem) | موجودہ عملدرآمد کے سیاق و سباق میں میموری کا سائز، بائٹس میں | |
| 5A | GAS | 2 | . | gasRemaining | ||
| 5B | JUMPDEST | 1 | درست جمپ کی منزل کو نشان زد کریں | ایک درست جمپ کی منزل، مثال کے طور پر ایک جمپ کی منزل جو پش ڈیٹا کے اندر نہ ہو | ||
| 5C | TLOAD | 100 | key | tstorage[key] | ٹرانزینٹ اسٹوریج سے ورڈ پڑھیں (EIP-1153 (opens in a new tab)) | |
| 5D | TSTORE | 100 | key, val | . | tstorage[key] := val | ٹرانزینٹ اسٹوریج میں ورڈ لکھیں (EIP-1153 (opens in a new tab)) |
| 5E | MCOPY | 3+3*words+A0 (opens in a new tab) | dstOst, ost, len | . | mem[dstOst] := mem[ost:ost+len] | میموری کو ایک جگہ سے دوسری جگہ کاپی کریں (EIP-5656 (opens in a new tab)) |
| 5F | PUSH0 | 2 | . | uint8 | مستقل ویلیو 0 کو اسٹیک پر پش کریں | |
| 60 | PUSH1 | 3 | . | uint8 | 1-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 61 | PUSH2 | 3 | . | uint16 | 2-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 62 | PUSH3 | 3 | . | uint24 | 3-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 63 | PUSH4 | 3 | . | uint32 | 4-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 64 | PUSH5 | 3 | . | uint40 | 5-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 65 | PUSH6 | 3 | . | uint48 | 6-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 66 | PUSH7 | 3 | . | uint56 | 7-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 67 | PUSH8 | 3 | . | uint64 | 8-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 68 | PUSH9 | 3 | . | uint72 | 9-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 69 | PUSH10 | 3 | . | uint80 | 10-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 6A | PUSH11 | 3 | . | uint88 | 11-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 6B | PUSH12 | 3 | . | uint96 | 12-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 6C | PUSH13 | 3 | . | uint104 | 13-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 6D | PUSH14 | 3 | . | uint112 | 14-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 6E | PUSH15 | 3 | . | uint120 | 15-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 6F | PUSH16 | 3 | . | uint128 | 16-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 70 | PUSH17 | 3 | . | uint136 | 17-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 71 | PUSH18 | 3 | . | uint144 | 18-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 72 | PUSH19 | 3 | . | uint152 | 19-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 73 | PUSH20 | 3 | . | uint160 | 20-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 74 | PUSH21 | 3 | . | uint168 | 21-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 75 | PUSH22 | 3 | . | uint176 | 22-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 76 | PUSH23 | 3 | . | uint184 | 23-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 77 | PUSH24 | 3 | . | uint192 | 24-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 78 | PUSH25 | 3 | . | uint200 | 25-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 79 | PUSH26 | 3 | . | uint208 | 26-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 7A | PUSH27 | 3 | . | uint216 | 27-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 7B | PUSH28 | 3 | . | uint224 | 28-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 7C | PUSH29 | 3 | . | uint232 | 29-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 7D | PUSH30 | 3 | . | uint240 | 30-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 7E | PUSH31 | 3 | . | uint248 | 31-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 7F | PUSH32 | 3 | . | uint256 | 32-بائٹ ویلیو کو اسٹیک پر پش کریں | |
| 80 | DUP1 | 3 | a | a, a | اسٹیک پر پہلی ویلیو کا کلون بنائیں | |
| 81 | DUP2 | 3 | _, a | a, _, a | اسٹیک پر دوسری ویلیو کا کلون بنائیں | |
| 82 | DUP3 | 3 | _, _, a | a, _, _, a | اسٹیک پر تیسری ویلیو کا کلون بنائیں | |
| 83 | DUP4 | 3 | _, _, _, a | a, _, _, _, a | اسٹیک پر چوتھی ویلیو کا کلون بنائیں | |
| 84 | DUP5 | 3 | ..., a | a, ..., a | اسٹیک پر 5ویں ویلیو کا کلون بنائیں | |
| 85 | DUP6 | 3 | ..., a | a, ..., a | اسٹیک پر 6ویں ویلیو کا کلون بنائیں | |
| 86 | DUP7 | 3 | ..., a | a, ..., a | اسٹیک پر 7ویں ویلیو کا کلون بنائیں | |
| 87 | DUP8 | 3 | ..., a | a, ..., a | اسٹیک پر 8ویں ویلیو کا کلون بنائیں | |
| 88 | DUP9 | 3 | ..., a | a, ..., a | اسٹیک پر 9ویں ویلیو کا کلون بنائیں | |
| 89 | DUP10 | 3 | ..., a | a, ..., a | اسٹیک پر 10ویں ویلیو کا کلون بنائیں | |
| 8A | DUP11 | 3 | ..., a | a, ..., a | اسٹیک پر 11ویں ویلیو کا کلون بنائیں | |
| 8B | DUP12 | 3 | ..., a | a, ..., a | اسٹیک پر 12ویں ویلیو کا کلون بنائیں | |
| 8C | DUP13 | 3 | ..., a | a, ..., a | اسٹیک پر 13ویں ویلیو کا کلون بنائیں | |
| 8D | DUP14 | 3 | ..., a | a, ..., a | اسٹیک پر 14ویں ویلیو کا کلون بنائیں | |
| 8E | DUP15 | 3 | ..., a | a, ..., a | اسٹیک پر 15ویں ویلیو کا کلون بنائیں | |
| 8F | DUP16 | 3 | ..., a | a, ..., a | اسٹیک پر 16ویں ویلیو کا کلون بنائیں | |
| 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) | ost, len | . | LOG0(memory[ost:ost+len-1]) | |
| A1 | LOG1 | A8 (opens in a new tab) | ost, len, topic0 | . | LOG1(memory[ost:ost+len-1], topic0) | |
| A2 | LOG2 | A8 (opens in a new tab) | ost, len, topic0, topic1 | . | LOG2(memory[ost:ost+len-1], topic0, topic1) | |
| A3 | LOG3 | A8 (opens in a new tab) | ost, len, topic0, topic1, topic2 | . | LOG3(memory[ost:ost+len-1], topic0, topic1, topic2) | |
| A4 | LOG4 | A8 (opens in a new tab) | ost, len, topic0, topic1, topic2, topic3 | . | LOG4(memory[ost:ost+len-1], topic0, topic1, topic2, topic3) | |
| A5-EF | غیر معتبر | |||||
| F0 | CREATE | A9 (opens in a new tab) | val, ost, len | addr | addr = keccak256(rlp([address(this), this.nonce])) | |
| F1 | CALL | AA (opens in a new tab) | gas, addr, val, argOst, argLen, retOst, retLen | success | mem[retOst:retOst+retLen-1] := returndata | |
| F2 | CALLCODE | AA (opens in a new tab) | gas, addr, val, argOst, argLen, retOst, retLen | success | mem[retOst:retOst+retLen-1] = returndata | DELEGATECALL کی طرح، لیکن اصل msg.sender اور msg.value کو آگے نہیں بڑھاتا |
| F3 | RETURN | 0* (opens in a new tab) | ost, len | . | return mem[ost:ost+len-1] | |
| F4 | DELEGATECALL | AA (opens in a new tab) | gas, addr, argOst, argLen, retOst, retLen | success | mem[retOst:retOst+retLen-1] := returndata | |
| F5 | CREATE2 | A9 (opens in a new tab) | val, ost, len, salt | addr | addr = keccak256(0xff ++ address(this) ++ salt ++ keccak256(mem[ost:ost+len-1]))[12:] | |
| F6-F9 | غیر معتبر | |||||
| FA | STATICCALL | AA (opens in a new tab) | gas, addr, argOst, argLen, retOst, retLen | success | mem[retOst:retOst+retLen-1] := returndata | |
| FB-FC | غیر معتبر | |||||
| FD | REVERT | 0* (opens in a new tab) | ost, len | . | revert(mem[ost:ost+len-1]) | |
| FE | INVALID | AF (opens in a new tab) | نامزد کردہ غیر معتبر اوپ کوڈ - EIP-141 (opens in a new tab) | |||
| FF | SELFDESTRUCT | AB (opens in a new tab) | addr | . | تمام ETH کو addr پر بھیجتا ہے؛ اگر اسی ٹرانزیکشن میں عملدرآمد کیا جائے جس میں کنٹریکٹ بنایا گیا تھا تو یہ کنٹریکٹ کو تباہ کر دیتا ہے |