تخطٍ إلى المحتوى الرئيسي
Change page

رموز التشغيل لـ EVM

آخر تحديث للصفحة: 11 سبتمبر 2025

نظرة عامة

هذه نسخة محدثة من صفحة EVM المرجعية على wolflo/evm-opcodes (opens in a new tab). مستمدة أيضًا من Yellow Paper (opens in a new tab)، وJello Paper (opens in a new tab)، وتطبيق geth (opens in a new tab). والمقصود من هذا هو أن يكون مرجعًا يمكن الوصول إليه، ولكنه ليس صارمًا بشكل خاص. إذا كنت تريد التأكد من الصحة وإدراك كل حالة حافة، فمن المستحسن استخدام Jello Paper أو تطبيق العميل.

هل تبحث عن مرجع تفاعلي؟ اطلع على evm.codes (opens in a new tab).

للعمليات ذات تكاليف الغاز الديناميكية، راجع gas.md (opens in a new tab).

💡 نصيحة سريعة: لعرض الأسطر بأكملها، استخدم [shift] + scroll للتمرير أفقيًا على سطح المكتب.

كومةالاسمالغازالمكدس الأوليالمكدس الناتجملحوظاتالملاحظات
00STOP0إيقاف التنفيذ
01ADD3a, ba + bجمع (u)int256 بالمعامل 2**256
02MUL5a, ba * bضرب (u)int256 بالمعامل 2**256
03SUB3a, ba - bطرح (u)int256 بالمعامل 2**256
04DIV5a, ba // bقسمة uint256
05SDIV5a, ba // bقسمة int256
06MOD5a, ba % bمعامل uint256
07SMOD5a, ba % bمعامل int256
08ADDMOD8a, b, N(a + b) % Nجمع (u)int256 بالمعامل N
09MULMOD8a, b, N(a * b) % Nضرب (u)int256 بالمعامل N
0AEXPA1 (opens in a new tab)a, ba ** bرفع أسي لـ uint256 بالمعامل 2**256
0BSIGNEXTEND5b, xSIGNEXTEND(x, b)توسيع الإشارة (opens in a new tab) لـ x من (b+1) بايت إلى 32 بايت
0C-0Fغير صالح
10LT3a, ba < buint256 أصغر من
11GT3a, ba > buint256 أكبر من
12SLT3a, ba < bint256 أصغر من
13SGT3a, ba > bint256 أكبر من
14EQ3a, ba == bمساواة (u)int256
15ISZERO3أa == 0(u)int256 يساوي الصفر
16AND3a, ba && bAND على مستوى البت
17OR3a, b`a \\b`
18XOR3a, ba ^ bXOR على مستوى البت
19NOT3أ~aNOT على مستوى البت
1ABYTE3i, x(x >> (248 - i * 8)) && 0xFFالبايت i من (u)int256 x، من اليسار
1BSHL3shift, valval << shiftإزاحة لليسار
1CSHR3shift, valval >> shiftإزاحة منطقية لليمين
1DSAR3shift, valval >> shiftإزاحة حسابية لليمين
1E-1Fغير صالح
20KECCAK256A2 (opens in a new tab)ost, lenkeccak256(mem[ost:ost+len-1])keccak256
21-2Fغير صالح
30ADDRESS2.address(this)عنوان العقد قيد التنفيذ
31BALANCEA5 (opens in a new tab)addraddr.balanceالرصيد، بـ wei
32ORIGIN2.tx.originالعنوان الذي أنشأ المعاملة
33CALLER2.msg.senderعنوان مرسل الرسالة
٣٤CALLVALUE2.msg.valueقيمة الرسالة، بـ wei
35CALLDATALOAD3idxmsg.data[idx:idx+32]قراءة كلمة من بيانات الرسالة عند الفهرس idx
36CALLDATASIZE2.len(msg.data)طول بيانات الرسالة، بالبايت
37CALLDATACOPYA3 (opens in a new tab)dstOst, ost, len.mem[dstOst:dstOst+len-1] := msg.data[ost:ost+len-1]نسخ بيانات الرسالة
38CODESIZE2.len(this.code)طول النص البرمجي للعقد قيد التنفيذ، بالبايت
39CODECOPYA3 (opens in a new tab)dstOst, ost, len.mem[dstOst:dstOst+len-1] := this.code[ost:ost+len-1]نسخ الكود الثنائي للعقد قيد التنفيذ
3AGASPRICE2.tx.gaspriceسعر الغاز للمعاملة، بـ wei لكل وحدة غاز ** (opens in a new tab)
3BEXTCODESIZEA5 (opens in a new tab)addrlen(addr.code)حجم النص البرمجي عند العنوان addr، بالبايت
3CEXTCODECOPYA4 (opens in a new tab)addr, dstOst, ost, len.mem[dstOst:dstOst+len-1] := addr.code[ost:ost+len-1]نسخ النص البرمجي من addr
3DRETURNDATASIZE2.sizeحجم البيانات المعادة من آخر استدعاء خارجي، بالبايت
3ERETURNDATACOPYA3 (opens in a new tab)dstOst, ost, len.mem[dstOst:dstOst+len-1] := returndata[ost:ost+len-1]نسخ البيانات المعادة من آخر استدعاء خارجي
3FEXTCODEHASHA5 (opens in a new tab)addrالتجزئةالتجزئة (هاش) = addr.exists ? keccak256(addr.code) : 0
40BLOCKHASH20blockNumblockHash(blockNum)
41COINBASE2.block.coinbaseعنوان مقدم العرض للكتلة الحالية
42TIMESTAMP2.block.timestampالختم الزمني للكتلة الحالية
43NUMBER2.block.numberرقم الكتلة الحالية
44PREVRANDAO2.randomness beaconمنارة العشوائية
45GASLIMIT2.block.gaslimitحد الغاز للكتلة الحالية
46CHAINID2.chain_idدفع معرف السلسلة (opens in a new tab) الحالي إلى المكدس
47SELFBALANCE5.address(this).balanceرصيد العقد قيد التنفيذ، بـ wei
48BASEFEE2.block.basefeeالرسوم الأساسية للكتلة الحالية
49BLOBHASH3idxtx.blob_versioned_hashes[idx]EIP-4844 (opens in a new tab)
4ABLOBBASEFEE2.block.blobbasefeeالرسوم الأساسية للنقطة للكتلة الحالية (EIP-7516 (opens in a new tab))
4B-4Fغير صالح
50POP2_anon.إزالة عنصر من أعلى المكدس والتخلص منه
51MLOAD3* (opens in a new tab)ostmem[ost:ost+32]قراءة كلمة من الذاكرة عند الإزاحة ost
52MSTORE3* (opens in a new tab)ost, val.mem[ost:ost+32] := valكتابة كلمة إلى الذاكرة
53MSTORE83* (opens in a new tab)ost, val.mem[ost] := val && 0xFFكتابة بايت واحد إلى الذاكرة
54SLOADA6 (opens in a new tab)keystorage[key]قراءة كلمة من التخزين
55SSTOREA7 (opens in a new tab)key, val.storage[key] := valكتابة كلمة إلى التخزين
56JUMP8dst.$pc := dst تشير إلى أنه يتم تعيين pc فقط إذا كان dst وجهة قفز صالحة
57JUMPI10dst, condition.$pc := condition ? dst : $pc + 1
58PC2.$pcعداد البرنامج
59MSIZE2.len(mem)حجم الذاكرة في سياق التنفيذ الحالي، بالبايت
5AGAS2.gasRemaining
5BJUMPDEST١تمييز وجهة قفز صالحةوجهة قفز صالحة على سبيل المثال وجهة قفز ليست داخل بيانات الدفع
5CTLOAD100keytstorage[key]قراءة كلمة من التخزين المؤقت (EIP-1153 (opens in a new tab))
5DTSTORE100key, val.tstorage[key] := valكتابة كلمة إلى التخزين المؤقت (EIP-1153 (opens in a new tab))
5EMCOPY3+3*words+A0 (opens in a new tab)dstOst, ost, len.mem[dstOst] := mem[ost:ost+len]نسخ الذاكرة من منطقة إلى أخرى (EIP-5656 (opens in a new tab))
5FPUSH02.uint8دفع القيمة الثابتة 0 إلى المكدس
60PUSH13.uint8دفع قيمة 1 بايت إلى المكدس
61PUSH23.uint16دفع قيمة 2 بايت إلى المكدس
62PUSH33.uint24دفع قيمة 3 بايت إلى المكدس
63PUSH43.uint32دفع قيمة 4 بايت إلى المكدس
64PUSH53.uint40دفع قيمة 5 بايت إلى المكدس
65PUSH63.uint48دفع قيمة 6 بايت إلى المكدس
66PUSH73.uint56دفع قيمة 7 بايت إلى المكدس
67PUSH83.uint64دفع قيمة 8 بايت إلى المكدس
68PUSH93.uint72دفع قيمة 9 بايت إلى المكدس
69PUSH103.uint80دفع قيمة 10 بايت إلى المكدس
6APUSH113.uint88دفع قيمة 11 بايت إلى المكدس
6BPUSH123.uint96دفع قيمة 12 بايت إلى المكدس
6CPUSH133.uint104دفع قيمة 13 بايت إلى المكدس
6DPUSH143.uint112دفع قيمة 14 بايت إلى المكدس
6EPUSH153.uint120دفع قيمة 15 بايت إلى المكدس
6FPUSH163.uint128دفع قيمة 16 بايت إلى المكدس
70PUSH173.uint136دفع قيمة 17 بايت إلى المكدس
71PUSH183.uint144دفع قيمة 18 بايت إلى المكدس
72PUSH193.uint152دفع قيمة 19 بايت إلى المكدس
73PUSH203.uint160دفع قيمة 20 بايت إلى المكدس
74PUSH213.uint168دفع قيمة 21 بايت إلى المكدس
75PUSH223.uint176دفع قيمة 22 بايت إلى المكدس
76PUSH233.uint184دفع قيمة 23 بايت إلى المكدس
77PUSH243.uint192دفع قيمة 24 بايت إلى المكدس
78PUSH253.uint200دفع قيمة 25 بايت إلى المكدس
79PUSH263.uint208دفع قيمة 26 بايت إلى المكدس
7APUSH273.uint216دفع قيمة 27 بايت إلى المكدس
7BPUSH283.uint224دفع قيمة 28 بايت إلى المكدس
7CPUSH293.uint232دفع قيمة 29 بايت إلى المكدس
7DPUSH303.uint240دفع قيمة 30 بايت إلى المكدس
7EPUSH313.uint248دفع قيمة 31 بايت إلى المكدس
7FPUSH323.الوحدة 256دفع قيمة 32 بايت إلى المكدس
80DUP13أa, aاستنساخ القيمة الأولى على المكدس
81DUP23_, aa, _, aاستنساخ القيمة الثانية على المكدس
82DUP33_, _, aa, _, _, aاستنساخ القيمة الثالثة على المكدس
83DUP43_, _, _, aa, _, _, _, aاستنساخ القيمة الرابعة على المكدس
84DUP53..., aa, ..., aاستنساخ القيمة الخامسة على المكدس
85DUP63..., aa, ..., aاستنساخ القيمة السادسة على المكدس
86DUP73..., aa, ..., aاستنساخ القيمة السابعة على المكدس
87DUP83..., aa, ..., aاستنساخ القيمة الثامنة على المكدس
88DUP93..., aa, ..., aاستنساخ القيمة التاسعة على المكدس
89DUP103..., aa, ..., aاستنساخ القيمة العاشرة على المكدس
8ADUP113..., aa, ..., aاستنساخ القيمة الحادية عشرة على المكدس
8BDUP123..., aa, ..., aاستنساخ القيمة الثانية عشرة على المكدس
8CDUP133..., aa, ..., aاستنساخ القيمة الثالثة عشرة على المكدس
8DDUP143..., aa, ..., aاستنساخ القيمة الرابعة عشرة على المكدس
8EDUP153..., aa, ..., aاستنساخ القيمة الخامسة عشرة على المكدس
8FDUP163..., aa, ..., aاستنساخ القيمة السادسة عشرة على المكدس
90SWAP13a, bb, a
91SWAP23a, _, bb, _, a
92SWAP33a, _, _, bb, _, _, a
93SWAP43a, _, _, _, bb, _, _, _, a
94SWAP53a, ..., bb, ..., a
95SWAP63a, ..., bb, ..., a
96SWAP73a, ..., bb, ..., a
97SWAP83a, ..., bb, ..., a
98SWAP93a, ..., bb, ..., a
99SWAP103a, ..., bb, ..., a
9ASWAP113a, ..., bb, ..., a
9BSWAP123a, ..., bb, ..., a
9CSWAP133a, ..., bb, ..., a
9DSWAP143a, ..., bb, ..., a
9ESWAP153a, ..., bb, ..., a
9FSWAP163a, ..., bb, ..., a
A0LOG0A8 (opens in a new tab)ost, len.LOG0(memory[ost:ost+len-1])
A1LOG1A8 (opens in a new tab)ost, len, topic0.LOG1(memory[ost:ost+len-1], topic0)
A2LOG2A8 (opens in a new tab)ost, len, topic0, topic1.LOG2(memory[ost:ost+len-1], topic0, topic1)
A3LOG3A8 (opens in a new tab)ost, len, topic0, topic1, topic2.LOG3(memory[ost:ost+len-1], topic0, topic1, topic2)
A4LOG4A8 (opens in a new tab)ost, len, topic0, topic1, topic2, topic3.LOG4(memory[ost:ost+len-1], topic0, topic1, topic2, topic3)
A5-EFغير صالح
F0CREATEA9 (opens in a new tab)val, ost, lenaddraddr = keccak256(rlp([address(this), this.nonce]))
F1CALLAA (opens in a new tab)gas, addr, val, argOst, argLen, retOst, retLensuccessmem[retOst:retOst+retLen-1] := returndata
F2CALLCODEAA (opens in a new tab)gas, addr, val, argOst, argLen, retOst, retLensuccessmem[retOst:retOst+retLen-1] = returndataنفس DELEGATECALL، لكنه لا ينشر msg.sender و msg.value الأصليين
F3RETURN0* (opens in a new tab)ost, len.return mem[ost:ost+len-1]
F4DELEGATECALLAA (opens in a new tab)gas, addr, argOst, argLen, retOst, retLensuccessmem[retOst:retOst+retLen-1] := returndata
F5CREATE2A9 (opens in a new tab)val, ost, len, saltaddraddr = keccak256(0xff ++ address(this) ++ salt ++ keccak256(mem[ost:ost+len-1]))[12:]
F6-F9غير صالح
FASTATICCALLAA (opens in a new tab)gas, addr, argOst, argLen, retOst, retLensuccessmem[retOst:retOst+retLen-1] := returndata
FB-FCغير صالح
FDREVERT0* (opens in a new tab)ost, len.revert(mem[ost:ost+len-1])
FEINVALIDAF (opens in a new tab)رمز تشغيل غير صالح معين - EIP-141 (opens in a new tab)
FFSELFDESTRUCTAB (opens in a new tab)addr.يرسل كل ETH إلى addr؛ إذا تم تنفيذه في نفس المعاملة التي تم فيها إنشاء عقد، فإنه يدمر العقد

هل كانت هذه المقالة مفيدة؟