تسرد هذه الصفحة تنسيقات التعليمات المستخدمة بواسطة تنسيق Dalvik القابل للتنفيذ (DEX) وكود Dalvik الثانوي. ومن المفترض أن يتم استخدامه مع المستند المرجعي للرمز الثانوي .
أوصاف bitwise
يسرد العمود الأول في جدول التنسيق تخطيط التنسيق الخاص بالبت. وتتكون من "كلمة" واحدة أو أكثر مفصولة بمسافات، وتصف كل منها وحدة كود مكونة من 16 بت. يمثل كل حرف في الكلمة أربع بتات، تُقرأ من البتات العالية إلى المنخفضة، مع وجود أشرطة عمودية (" |
") تتخللها للمساعدة في القراءة. تُستخدم الأحرف الكبيرة بالتسلسل من " A
" للإشارة إلى الحقول داخل التنسيق (والتي يتم تعريفها بعد ذلك بشكل أكبر من خلال عمود بناء الجملة). يتم استخدام المصطلح " op
" للإشارة إلى موضع كود تشغيل مكون من ثمانية بتات داخل التنسيق. يتم استخدام الصفر المائل (" Ø
") للإشارة إلى أن جميع البتات يجب أن تكون صفرًا في الموضع المشار إليه.
بالنسبة للجزء الأكبر، تستمر عملية الكتابة من وحدات التعليمات البرمجية السابقة إلى وحدات التعليمات البرمجية اللاحقة، ومن الترتيب المنخفض إلى الترتيب العالي داخل وحدة التعليمات البرمجية. ومع ذلك، هناك بعض الاستثناءات لهذه القاعدة العامة، والتي يتم إجراؤها من أجل جعل تسمية الأجزاء ذات المعنى المتشابه هي نفسها عبر تنسيقات التعليمات المختلفة. تتم الإشارة إلى هذه الحالات بوضوح في أوصاف التنسيق.
على سبيل المثال، يشير التنسيق " B|A| op CCCC
" إلى أن التنسيق يتكون من وحدتي تعليمات برمجية ذات 16 بت. تتكون الكلمة الأولى من كود التشغيل في البتات الثمانية المنخفضة وزوج من قيم الأربع بتات في البتات الثمانية العليا؛ وتتكون الكلمة الثانية من قيمة واحدة مكونة من 16 بت.
معرفات التنسيق
يشير العمود الثاني في جدول التنسيق إلى المعرف القصير للتنسيق، والذي يتم استخدامه في المستندات الأخرى وفي التعليمات البرمجية لتعريف التنسيق.
تتكون معظم معرفات التنسيق من ثلاثة أحرف ورقمين متبوعين بحرف. يشير الرقم الأول إلى عدد وحدات التعليمات البرمجية ذات 16 بت في التنسيق. يشير الرقم الثاني إلى الحد الأقصى لعدد السجلات التي يحتوي عليها التنسيق (الحد الأقصى، نظرًا لأن بعض التنسيقات يمكن أن تستوعب عددًا متغيرًا من السجلات)، مع الإشارة الخاصة " r
" إلى أنه تم ترميز نطاق من السجلات. يشير الحرف الأخير بشكل شبه تذكيري إلى نوع أي بيانات إضافية مشفرة بواسطة التنسيق. على سبيل المثال، التنسيق " 21t
" يبلغ طوله اثنين، ويحتوي على مرجع تسجيل واحد، ويحتوي بالإضافة إلى ذلك على هدف فرعي.
تحتوي تنسيقات الارتباط الثابتة المقترحة على لاحقة " s
" إضافية، مما يجعلها في المجمل أربعة أحرف. وبالمثل، تحتوي تنسيقات الارتباط "المضمّنة" المقترحة على لاحقة " i
" إضافية. (في هذا السياق، يشبه الارتباط المضمن الارتباط الثابت، باستثناء وجود روابط أكثر مباشرة في تنفيذ الجهاز.) وأخيرًا، تتضمن بعض التنسيقات الغريبة المقترحة (على سبيل المثال، " 20bc
") قطعتين من البيانات يتم تمثيلهما في معرف التنسيق الخاص به .
القائمة الكاملة لأحرف typecode هي كما يلي. لاحظ أن بعض النماذج لها أحجام مختلفة، اعتمادًا على التنسيق:
ذاكري | أحجام البت | معنى |
---|---|---|
ب | 8 | توقيع فوري ب yte |
ج | 16، 32 | ج مؤشر التجمع المستمر |
F | 16 | ثوابت inter f (تُستخدم فقط في التنسيقات المرتبطة بشكل ثابت) |
ح | 16 | تم التوقيع الفوري على h (البتات ذات الترتيب العالي بقيمة 32 أو 64 بت؛ والبتات ذات الترتيب المنخفض كلها 0 ) |
أنا | 32 | وقعت على الفور أنا الإقليم الشمالي، أو تعويم 32 بت |
ل | 64 | توقيع فوري لونغ ، أو 64 بت مزدوج |
م | 16 | ثوابت الأسلوب m (تستخدم فقط في التنسيقات المرتبطة بشكل ثابت) |
ن | 4 | وقع فوري ن ibble |
س | 16 | التوقيع الفوري قصير |
ر | 8، 16، 32 | فرع ر الهدف |
س | 0 | لا توجد بيانات إضافية |
بناء الجملة
يشير العمود الثالث من جدول التنسيق إلى بناء الجملة الموجه نحو الإنسان للتعليمات التي تستخدم التنسيق المشار إليه. تبدأ كل تعليمات بكود التشغيل المسمى ويتبعها اختياريًا وسيطة واحدة أو أكثر، مفصولة بفواصل.
عندما تشير الوسيطة إلى حقل من العمود الأول، تتم الإشارة إلى حرف هذا الحقل في بناء الجملة، ويتكرر مرة واحدة لكل أربع بتات من الحقل. على سبيل المثال، الحقل المكون من ثمانية بتات المسمى " BB
" في العمود الأول سيتم أيضًا تسميته " BB
" في عمود بناء الجملة.
الوسيطات التي تحمل اسم السجل لها الشكل " v X
". تم اختيار البادئة " v
" بدلاً من " r
" الأكثر شيوعًا لتجنب التعارض مع البنى (غير الافتراضية) التي يمكن تنفيذ تنسيق Dalvik القابل للتنفيذ عليها والتي تستخدم هي نفسها البادئة " r
" لسجلاتها. (أي أن هذا القرار يجعل من الممكن التحدث عن كل من السجلات الافتراضية والحقيقية معًا دون الحاجة إلى الإطناب.)
الوسائط التي تشير إلى قيمة حرفية لها الشكل " #+ X
". تشير بعض التنسيقات إلى قيم حرفية لا تحتوي إلا على بتات غير صفرية في البتات ذات الترتيب العالي؛ بالنسبة لهذه، يتم تمثيل الأصفار بشكل واضح في بناء الجملة، على الرغم من أنها لا تظهر في تمثيل البت.
الوسائط التي تشير إلى إزاحة عنوان التعليمات النسبية لها النموذج " + X
".
الوسائط التي تشير إلى فهرس تجمع ثابت حرفيًا لها النموذج " kind @ X
"، حيث يشير " kind
" إلى التجمع الثابت الذي تتم الإشارة إليه. كل كود تشغيل يستخدم مثل هذا التنسيق بشكل صريح يسمح بنوع واحد فقط من الثوابت؛ راجع مرجع كود التشغيل لمعرفة المراسلات. أنواع التجمع الثابت هي " string
" (فهرس تجمع السلاسل)، و" type
" (فهرس تجمع النوع)، و" field
" (فهرس تجمع الحقول)، و" meth
" (فهرس تجمع الأساليب)، و" site
" (فهرس موقع الاتصال) ).
على غرار تمثيل مؤشرات التجمع الثابت، هناك أيضًا نماذج مقترحة (اختيارية) تشير إلى الإزاحات أو المؤشرات المرتبطة مسبقًا. هناك نوعان من القيمة المرتبطة مسبقًا المقترحة: إزاحات vtable (يشار إليها باسم " vtaboff
") وإزاحات الحقول (يشار إليها باسم " fieldoff
").
في الحالات التي لا تكون فيها قيمة التنسيق جزءًا صريحًا من بناء الجملة ولكن بدلاً من ذلك تختار متغيرًا، يتم إدراج كل متغير بالبادئة " [ X = N ]
" (على سبيل المثال، " [A=2]
") للإشارة إلى المراسلات .
التنسيقات
شكل | بطاقة تعريف | بناء الجملة | تمت تغطية رموز التشغيل البارزة |
---|---|---|---|
لا يوجد | 00x | N/A | التنسيق الزائف المستخدم لأكواد التشغيل غير المستخدمة؛ مقترح للاستخدام كتنسيق اسمي لرمز تشغيل نقطة التوقف |
ØØ| مرجع سابق | 10x | op | |
ب|أ| مرجع سابق | 12x | op vA، vB | |
11 ن | op الخامس أ، #+ب | ||
أأ| مرجع سابق | 11x | op vAA | |
10 طن | op + أأ | اذهب إلى | |
ØØ| المرجع AAAA | 20 طن | op + AAAA | غوتو/16 |
أأ| المرجع BBBB | 20 قبل الميلاد | op AA، kind@BBBB | التنسيق المقترح لأخطاء التحقق المحددة بشكل ثابت؛ A هو نوع الخطأ وB هو فهرس في جدول مناسب للنوع (على سبيل المثال، مراجع الطريقة لخطأ لا يوجد مثل هذا الأسلوب) |
أأ| المرجع BBBB | 22x | op vAA، vBBBB | |
21 طن | op vAA، +BBBB | ||
21 ثانية | op vAA، #+BBBB | ||
21 ساعة | op vAA، #+BBBB0000op vAA، #+BBBB000000000000 | ||
21 ج | op vAA، اكتب@BBBBop vAA، field@BBBBop vAA،method_handle@BBBBop vAA، proto@BBBBop vAA، string@BBBB | تحقق من الصب فئة ثابتة مقبض طريقة ثابت نوع طريقة ثابت سلسلة ثابتة | |
أأ| المرجع CC|BB | 23x | op vAA، vBB، vCC | |
22 ب | op vAA، vBB، #+CC | ||
ب|أ| المرجع CCCC | 22 طن | op vA، vB، + CCCC | |
22 ثانية | op vA، vB، #+CCCC | ||
22 ج | op vA، vB، اكتب@CCCCop vA، vB، field@CCCC | حالة | |
22cs | op vA، vB، fieldoff@CCCC | التنسيق المقترح لتعليمات الوصول إلى الحقول المرتبطة بشكل ثابت بالتنسيق 22c | |
ØØ| على AAAA لو AAAA مرحبا | 30 طن | op +AAAAAAAA | غوتو/32 |
ØØ| على AAAA BBBB | 32x | op vAAAA، vBBBB | |
أأ| على BBBB لو BBBB مرحبا | 31ط | op vAA، #+BBBBBBBB | |
31 طن | op vAA، +BBBBBBBB | ||
31 ج | op vAA، string@BBBBBBBB | سلسلة ثابتة/جامبو | |
أ|ز| في BBBB F|E|D|C | 35 ج | [ 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 | |
أأ| على BBBB CCCC | 3rc | op {vCCCC .. vNNNN}، meth@BBBBop {vCCCC .. vNNNN}، site@BBBBop {vCCCC .. vNNNN}، اكتب@BBBB حيث | |
3rms | op {vCCCC .. vNNNN}، vtaboff@BBBB حيث | التنسيق المقترح لتعليمات invoke-virtual والاستدعاء invoke-super بالتنسيق 3rc | |
3rmi | op {vCCCC .. vNNNN}، inline@BBBB حيث | التنسيق المقترح لتعليمات invoke-static والاستدعاء invoke-virtual بالتنسيق 3rc | |
أ|ز| على 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 | استدعاء متعدد الأشكال |
أأ| المرجع BBBB CCCC HHHH | 4rcc | op> {vCCCC .. vNNNN}، meth@BBBB، proto@HHHH حيث | استدعاء متعدد الأشكال/النطاق |
أأ| على BBBB لو BBBB BBBB BBBB مرحبا | 51 لتر | op vAA، #+BBBBBBBBBBBBBB | على نطاق ثابت |