این صفحه فرمتهای دستورالعمل استفاده شده توسط فرمت اجرایی Dalvik (DEX) و بایت کد Dalvik را فهرست میکند. قرار است در ارتباط با سند مرجع بایت کد استفاده شود.
توضیحات بیتی
ستون اول جدول فرمت، طرح بیتی قالب را فهرست می کند. این شامل یک یا چند کلمه "کلمه" جدا شده با فاصله است که هر کدام یک واحد کد 16 بیتی را توصیف می کنند. هر کاراکتر در یک کلمه نشان دهنده چهار بیت است که از بیت های بالا به پایین خوانده می شود، با نوارهای عمودی (" |
") که برای کمک به خواندن در هم قرار گرفته اند. حروف بزرگ به ترتیب از " A
" برای نشان دادن فیلدهای درون قالب استفاده می شود (که سپس توسط ستون نحو مشخص می شود). اصطلاح " op
" برای نشان دادن موقعیت یک کد عملیاتی هشت بیتی در قالب استفاده می شود. یک صفر بریده بریده (" Ø
") برای نشان دادن اینکه همه بیت ها باید در موقعیت مشخص شده صفر باشند استفاده می شود.
در بیشتر موارد، حروف از واحدهای کد قبلی به واحدهای کد بعدی و از مرتبه پایین به مرتبه بالا در واحد کد منتقل می شود. با این حال، چند استثنا برای این قاعده کلی وجود دارد، که به این منظور انجام می شود که نام گذاری قسمت های مشابه در قالب های مختلف دستورالعمل یکسان باشد. این موارد به صراحت در توضیحات قالب ذکر شده است.
به عنوان مثال، فرمت " B|A| op CCCC
" نشان می دهد که فرمت از دو واحد کد 16 بیتی تشکیل شده است. کلمه اول شامل کد عملیاتی در هشت بیت کم و یک جفت مقدار چهار بیتی در هشت بیت بالا است. و کلمه دوم از یک مقدار 16 بیتی تشکیل شده است.
فرمت شناسه ها
ستون دوم جدول فرمت نشان دهنده شناسه کوتاه قالب است که در اسناد دیگر و در کد برای شناسایی قالب استفاده می شود.
اکثر شناسههای قالب شامل سه کاراکتر، دو رقم و یک حرف هستند. رقم اول تعداد واحدهای کد 16 بیتی در قالب را نشان می دهد. رقم دوم حداکثر تعداد رجیسترهایی را نشان میدهد که فرمت حاوی آن است (حداکثر، زیرا برخی فرمتها میتوانند تعداد متغیری از ثباتها را در خود جای دهند)، با نام ویژه " r
" که نشان میدهد محدودهای از ثباتها کدگذاری شدهاند. حرف آخر به صورت نیمه یادگاری نوع هر گونه داده اضافی کدگذاری شده توسط قالب را نشان می دهد. به عنوان مثال، فرمت " 21t
" به طول دو است، حاوی یک مرجع ثبت است، و علاوه بر این شامل یک هدف شاخه است.
فرمتهای پیوند ثابت پیشنهادی دارای پسوند « s
» اضافی هستند که در مجموع چهار کاراکتر میشوند. به طور مشابه، فرمتهای پیوندی «داخلی» پیشنهادی پسوند « i
» اضافی دارند. (در این زمینه، پیوند درون خطی مانند پیوند استاتیک است، به جز با پیوندهای مستقیم بیشتر با پیاده سازی ماشین.) در نهایت، چند فرمت پیشنهادی عجیب و غریب (مثلاً " 20bc
") شامل دو قطعه داده است که هر دو در ID فرمت آن نشان داده شده اند. .
لیست کامل حروف تایپ کد به شرح زیر است. توجه داشته باشید که برخی از فرم ها بسته به فرمت، اندازه های متفاوتی دارند:
حفظی | اندازه بیت | معنی |
---|---|---|
ب | 8 | امضای فوری b yte |
ج | 16، 32 | ج شاخص مستمر استخر |
f | 16 | ثابت های میانی (فقط در قالب های پیوندی استاتیک استفاده می شود) |
ساعت | 16 | h امضا شده فوری در (بیت های مرتبه بالا با مقدار 32 یا 64 بیت؛ بیت های مرتبه پایین همه 0 هستند) |
من | 32 | امضای فوری یا شناور 32 بیتی |
ل | 64 | امضای فوری یا دوبل 64 بیتی |
متر | 16 | ثابتهای روش m (فقط در قالبهای پیوندی استاتیک استفاده میشود) |
n | 4 | امضای فوری n ibble |
س | 16 | فورا امضا شده است |
تی | 8، 16، 32 | شاخه t arget |
ایکس | 0 | بدون داده های اضافی |
نحو
ستون سوم جدول قالب، نحو انسان گرا را برای دستورالعمل هایی که از قالب مشخص شده استفاده می کنند، نشان می دهد. هر دستورالعمل با opcode نامگذاری شده شروع می شود و به صورت اختیاری با یک یا چند آرگومان دنبال می شود که خود با کاما از هم جدا می شوند.
هر جا که یک آرگومان به یک فیلد از ستون اول اشاره می کند، حرف مربوط به آن فیلد در نحو نشان داده می شود و برای هر چهار بیت فیلد یک بار تکرار می شود. به عنوان مثال، یک فیلد هشت بیتی با برچسب " BB
" در ستون اول نیز دارای برچسب " BB
" در ستون نحو است.
آرگومان هایی که یک ثبات را نامگذاری می کنند شکل " v X
" دارند. پیشوند " v
" به جای رایج تر " r
" دقیقاً برای جلوگیری از تضاد با معماری های (غیر مجازی) انتخاب شد که قالب اجرایی Dalvik ممکن است روی آنها پیاده سازی شود و خودشان از پیشوند " r
" برای ثبات های خود استفاده می کنند. (یعنی این تصمیم این امکان را فراهم می کند که در مورد هر دو رجیستر مجازی و واقعی بدون نیاز به دور و بری صحبت کنیم.)
آرگومان هایی که یک مقدار تحت اللفظی را نشان می دهند شکل " #+ X
" دارند. برخی از قالبها بیانگر کلماتی هستند که فقط بیتهای غیرصفری در بیتهای مرتبه بالا دارند. برای اینها، صفرها به صراحت در نحو نمایش داده می شوند، حتی اگر در نمایش بیتی ظاهر نمی شوند.
آرگومان هایی که نشان دهنده یک آفست آدرس دستورالعمل نسبی هستند به شکل " + X
" هستند.
آرگومانهایی که نشاندهنده یک شاخص ثابت تحت اللفظی هستند به شکل " kind @ X
" هستند، که در آن " kind
" نشان میدهد که به کدام استخر ثابت اشاره میشود. هر کد عملیاتی که از چنین قالبی استفاده می کند به صراحت فقط یک نوع ثابت را مجاز می کند. برای پی بردن به متناظر به مرجع opcode مراجعه کنید. انواع استخر ثابت عبارتند از: " string
" (شاخص استخر رشته)، " type
" (شاخص استخر نوع)، " field
" (شاخص استخر میدان)، " meth
" (شاخص استخر روش) و " site
" (شاخص سایت تماس). ).
مشابه نمایش شاخصهای استخر ثابت، فرمهای پیشنهادی (اختیاری) نیز وجود دارد که نشاندهنده افستها یا شاخصهای از پیش پیوند شده است. دو نوع مقدار پیشپیوندی پیشنهادی وجود دارد: آفستهای vtable (که با « vtaboff
» نشان داده میشوند) و آفستهای فیلد (با نشاندادن « fieldoff
»).
در مواردی که یک مقدار قالب به صراحت بخشی از نحو نیست اما در عوض یک نوع را انتخاب می کند، هر گونه با پیشوند " [ X = N ]
" (مثلا، " [A=2]
") فهرست می شود تا مطابقت را نشان دهد. .
فرمت ها
قالب | شناسه | نحو | Opcodes قابل توجه تحت پوشش |
---|---|---|---|
N/A | 00x | N/A | شبه قالب مورد استفاده برای کدهای استفاده نشده. برای استفاده به عنوان فرمت اسمی برای کد نقطه شکست پیشنهاد شده است |
ØØ| op | 10 برابر | op | |
ب|الف| op | 12 برابر | op vA، vB | |
11n | op vA، #+B | ||
AA| op | 11 برابر | op vAA | |
10 تن | op +AA | رفتن به | |
ØØ| عملیات AAAA | 20 تن | op +AAAA | goto/16 |
AA| عملیات BBBB | 20 قبل از میلاد | op AA، kind@BBBB | فرمت پیشنهادی برای خطاهای تأیید صحت تعیین شده به صورت ایستا؛ A نوع خطا و B شاخصی در جدول مناسب نوع است (مثلاً مراجع روش برای خطای بدون چنین روشی) |
AA| عملیات BBBB | 22 برابر | op vAA، vBBBB | |
21 تن | op vAA، +BBBB | ||
21 | op vAA، #+BBBB | ||
ساعت 21 | op vAA، #+BBBB0000op vAA، #+BBBB000000000000 | ||
21c | op vAA، نوع@BBBBop vAA، field@BBBBop vAA، method_handle@BBBBop vAA، proto@BBBBop vAA، string@BBBB | چک بازیگران کلاس ثابت const-روش-دسته const-روش-نوع const-string | |
AA| op CC|BB | 23 برابر | op vAA، vBB، vCC | |
22b | op vAA، vBB، #+CC | ||
ب|الف| عملیات CCCC | 22 تن | op vA، vB، +CCCC | |
22 ثانیه | op vA، vB، #+CCCC | ||
22c | op vA، vB، type@CCCCop vA، vB، field@CCCC | به عنوان مثال از | |
22cs | op vA، vB، fieldoff@CCCC | فرمت پیشنهادی برای دستورالعملهای دسترسی میدانی مرتبط با فرمت 22c | |
ØØ| op AAAA lo AAAA سلام | 30 تن | op +AAAAAAAA | goto/32 |
ØØ| عملیات AAAA BBBB | 32 برابر | op vAAAA، vBBBB | |
AA| op BBBB lo BBBB سلام | 31i | op vAA، #+BBBBBBBB | |
31 تن | op vAA، +BBBBBBBB | ||
31c | op vAA، string@BBBBBBBB | const-string/jumbo | |
A|G| op BBBB F|E|D|C | 35c | [ A=5 ] op {vC، vD، vE، vF، vG}، meth@BBBB[ A=5 ] op {vC، vD، vE، vF، vG}، site@BBBB[ A=5 ] op {vC، vD، vE، vF، vG}، type@BBBB[ A=4 ] op {vC، vD، vE، vF}، kind @BBBB[ A=3 ] op {vC، vD، vE}، kind @BBBB[ A=2 ] op {vC، vD}، kind @BBBB[ A=1 ] op {vC}، kind @BBBB[ A=0 ] op {}، kind @BBBBانتخاب غیرمعمول در حروف در اینجا نشان دهنده تمایل به ایجاد شمارش و نمایه مرجع همان برچسب با فرمت 3rc است. | |
35 میلیثانیه | [ A=5 ] op {vC، vD، vE، vF، vG}، vtaboff@BBBB[ A=4 ] op {vC، vD، vE، vF}، vtaboff@BBBB[ A=3 ] op {vC، vD، vE}، vtaboff@BBBB[ A=2 ] op {vC، vD}، vtaboff@BBBB[ A=1 ] op {vC}، vtaboff@BBBBانتخاب غیرمعمول در حروف در اینجا نشان دهنده تمایل به ایجاد شمارش و نمایه مرجع همان برچسب با فرمت 3rms است. | فرمت پیشنهادی برای دستورالعملهای invoke-virtual و invoke-super با فرمت 35c با پیوند استاتیک | |
35 مایل | [ A=5 ] op {vC، vD، vE، vF، vG}، inline@BBBB[ A=4 ] op {vC، vD، vE، vF}، inline@BBBB[ A=3 ] op {vC، vD، vE}، inline@BBBB[ A=2 ] op {vC، vD}، inline@BBBB[ A=1 ] op {vC}، inline@BBBBانتخاب غیرمعمول در حروف در اینجا نشان دهنده تمایل به ایجاد شمارش و نمایه مرجع همان برچسب با فرمت 3rmi است. | فرمت پیشنهادی برای دستورالعملهای invoke-static و invoke-virtual مرتبط با فرمت 35c | |
AA| عملیات BBBB CCCC | 3rc | op {vCCCC .. vNNNN}، meth@BBBBop {vCCCC .. vNNNN}، site@BBBBop {vCCCC .. vNNNN}، type@BBBB که در آن | |
3 میلیثانیه | op {vCCCC .. vNNNN}، vtaboff@BBBB که در آن | فرمت پیشنهادی برای دستورالعملهای invoke-virtual و invoke-super پیوند استاتیک با فرمت 3rc | |
3rmi | op {vCCCC .. vNNNN}، inline@BBBB که در آن | فرمت پیشنهادی برای دستورالعملهای invoke-static و invoke-virtual با فرمت 3rc مرتبط شده | |
A|G| عملیات BBBB F|E|D|C HHHH | 45 سی سی | [ A=5 ] op {vC، vD، vE، vF، vG}، meth@BBBB، proto@HHHH[ A=4 ] op {vC، vD، vE، vF}، meth@BBBB، proto@HHHH[ A=3 ] op {vC، vD، vE}، meth@BBBB، proto@HHHH[ A=2 ] op {vC، vD}، meth@BBBB، proto@HHHH[ A=1 ] op {vC}، meth@BBBB، proto@HHHH | فراخوانی-چند شکلی |
AA| عملیات BBBB CCCC HHHH | 4 سی سی | op> {vCCCC .. vNNNN}، meth@BBBB، proto@HHHH که در آن | فراخوانی-چند شکلی/محدوده |
AA| op BBBB lo BBBB BBBB BBBB سلام | 51 لیتر | op vAA، #+BBBBBBBBBBBBBBBBB | به طور گسترده |