پرش به محتوا
Home » فهرست opcode ها و نحوه تبدیل به bytecode

فهرست opcode ها و نحوه تبدیل به bytecode

بحث کد های کامپایل شده در سالیدیتی آنقدر مهم است که دوباره سراغ opcode ها آمدیم. میخواهیم با فهرست کامل opcode ها آشنا شویم. سپس با یک مثال نحوه تبدیل opcode به bytecode را یاد بگیریم.

فهرست کامل را میتوانید در سایت اتریوم مشاهده کنید که اخیرا نیز بروزرسانی کردند و اطلاعات مفیدی اضافه کردند.

اما ما در اینجا به چند نمونه از آنها اشاره می کنیم. سپس با مثال عملی تبدیل opcode به bytecode را خواهیم آموخت.

پشته (استک)ناماستک اولیهنتیجهگس مصرفی
00STOP0
01ADDa, ba + b
(جمع دو uint256/int256 )
3
33CALLERآدرس msg sender2
31BALANCEآدرسموجودی آدرس به wei100/2600
60PUSH1قرار دادن ۱ بایت در استک3
5AGASگس باقیمانده2
50POPبرداشتن و حذف بالاترین مورد استک2
42TIMESTAMPزمان بلاک فعلی2
40BLOCKHASHشماره بلاکهش بلاک مورد نظر20

مشاهده فهرست کامل

مثالی از تبدیل opcode به bytecode

فرض کنید می خواهیم opcode زیر را به بایت کد تبدیل کنیم:

PUSH1 0x60 PUSH1 0x40 MSTORE

حال که فهرست opcode ها را در اختیار داریم کافیست آن ها را با اعدادشان جایگزین کنیم:

PUSH1 با ۶۰، مقدار بعدش هم که ۶۰ است که همان ۶۰ می شود، مجدد PUSH1 ۶۰، بعد ۴۰ هم خودش، و مقدار MSTORE هم ۵۲ است. پس باید کدمان اعداد زیر خواهد بود.

60 60 60 40 52

مبدل bytecode به opcode

در سایت ethscan یک مبدل bytecode به opcode وجود دارد. اما بعد از تست هایی که کردیم نتایج قابل اعتمادی نمی دهد. پس ضمن اینکه می توانید برای صرفه جویی در وقت از آن استفاده کنید، اما حتما نتایج را پس از تبدیل بررسی کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *