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

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

نظرة عامة

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

هل تبحث عن مرجع تفاعلي؟ تحقق من 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
15ISZERO3aa == 0(u)int256 يساوي صفر
16AND3a, ba && bAND على مستوى البت
17OR3a, ba || bOR على مستوى البت
18XOR3a, ba ^ bXOR على مستوى البت
19NOT3a~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عنوان مرسل الرسالة
34CALLVALUE2.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)حجم الكود في العنوان، بالبايت
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)addrhashhash = 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
5BJUMPDEST1تحديد وجهة قفز صالحةوجهة قفز صالحة، على سبيل المثال وجهة قفز ليست داخل بيانات الدفع
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.uint256دفع قيمة بحجم 32 بايت إلى المكدس
80DUP13aa, 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؛ إذا تم تنفيذه في نفس المعاملة التي تم فيها إنشاء العقد، فإنه يدمر العقد