تنسيقات التعليمات القابلة للتنفيذ Dalvik

تسرد هذه الصفحة تنسيقات التعليمات المستخدمة بواسطة تنسيق Dalvik Executable و Dalvik bytecode. من المفترض أن يتم استخدامه مع المستند المرجعي للرمز الثانوي .

أوصاف Bitwise

يسرد العمود الأول في جدول التنسيق تخطيط البت الخاص بالتنسيق. وهو يتألف من "كلمة" واحدة أو أكثر مفصولة بمسافات تصف كل منها وحدة رمز 16 بت. يمثل كل حرف في الكلمة أربع بتات ، تُقرأ من البتات العالية إلى المنخفضة ، مع وجود أشرطة عمودية (" | ") تتخللها للمساعدة في القراءة. تستخدم الأحرف الكبيرة المتسلسلة من " A " للإشارة إلى الحقول داخل التنسيق (والتي يتم تعريفها بعد ذلك بشكل أكبر بواسطة عمود بناء الجملة). يستخدم المصطلح " op " للإشارة إلى موضع كود التشغيل ثماني بت داخل التنسيق. يتم استخدام الصفر المائل (" Ø ") للإشارة إلى أن جميع البتات يجب أن تكون صفراً في الموضع المشار إليه.

بالنسبة للجزء الأكبر ، تنتقل الحروف من وحدات الكود الأقدم إلى وحدات الكود الأحدث ، ومن الترتيب المنخفض إلى الترتيب العالي داخل وحدة الكود. ومع ذلك ، هناك بعض الاستثناءات لهذه القاعدة العامة ، والتي يتم إجراؤها من أجل جعل تسمية الأجزاء ذات المعنى المتشابه هي نفسها عبر تنسيقات التعليمات المختلفة. تمت الإشارة إلى هذه الحالات بوضوح في أوصاف التنسيق.

على سبيل المثال ، يشير التنسيق " B|A| op CCCC " إلى أن التنسيق يتكون من وحدتي رمز 16 بت. تتكون الكلمة الأولى من كود التشغيل في الثماني بتات المنخفضة وزوج من القيم ذات الأربع بت في الثماني بتات العالية ؛ وتتكون الكلمة الثانية من قيمة واحدة 16 بت.

معرفات التنسيق

يشير العمود الثاني في جدول التنسيق إلى المعرف المختصر للتنسيق ، والذي يتم استخدامه في المستندات الأخرى وفي التعليمات البرمجية لتعريف التنسيق.

تتكون معظم معرفات التنسيق من ثلاثة أحرف ، رقمين متبوعين بحرف. يشير الرقم الأول إلى عدد وحدات رمز 16 بت في التنسيق. يشير الرقم الثاني إلى الحد الأقصى لعدد السجلات التي يحتوي عليها التنسيق (الحد الأقصى ، نظرًا لأن بعض التنسيقات يمكن أن تستوعب عددًا متغيرًا من السجلات) ، مع الإشارة الخاصة " r " إلى أن نطاق السجلات مشفر. يشير الحرف الأخير شبه ذاكري إلى نوع أي بيانات إضافية مشفرة بواسطة التنسيق. على سبيل المثال ، التنسيق " 21t " بطول اثنين ، ويحتوي على مرجع تسجيل واحد ، ويحتوي بالإضافة إلى ذلك على هدف فرع.

تنسيقات الارتباط الثابتة المقترحة لها لاحقة " s " إضافية ، مما يجعلها أربعة أحرف إجمالاً. وبالمثل ، فإن تنسيقات الربط "المضمنة" المقترحة لها لاحقة " i " إضافية. (في هذا السياق ، يشبه الارتباط المضمّن الارتباط الثابت ، إلا مع وجود المزيد من الروابط المباشرة في تنفيذ الجهاز.) وأخيرًا ، يشتمل تنسيقان مقترحان غريب الأطوار (على سبيل المثال ، " 20bc ") على جزأين من البيانات يتم تمثيلهما في معرّف التنسيق الخاص به .

القائمة الكاملة لأحرف رمز الطباع هي كما يلي. لاحظ أن بعض النماذج لها أحجام مختلفة ، حسب التنسيق:

ذاكري أحجام البت المعنى
ب 8 توقيع فوري ب yte
ج 16 ، 32 ج مؤشر التجمع المستمر
F 16 ثوابت inter f ace (تستخدم فقط في التنسيقات المرتبطة بشكل ثابت)
ح 16 موقعة فورًا عند (وحدات بت عالية الترتيب بقيمة 32 أو 64 بت ؛ وحدات البت ذات الترتيب المنخفض كلها 0 )
أنا 32 فوري موقع i nt ، أو تعويم 32 بت
ل 64 توقيع فوري l ong ، أو 64 بت مزدوج
م 16 ثوابت m ethod (تستخدم فقط في التنسيقات المرتبطة بشكل ثابت)
ن 4 توقيع فوري n ibble
س 16 توقيع فوري
ر 8 ، 16 ، 32 فرع تي arget
x 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
ب | أ | مرجع سابق 12 ضعفًا op vA ، المنتدى
11n op vA ، # + ب
AA | مرجع سابق 11 ضعفًا op vAA
10 ت op + AA اذهب إلى
Ø Ø | المرجع AAAA 20 ت op + AAAA غوتو / 16
AA | المرجع BBBB 20 قبل الميلاد op AA ، اكتب @ BBBB الشكل المقترح لأخطاء التحقق المحددة بشكل ثابت ؛ A هو نوع الخطأ و B هو فهرس في جدول مناسب للنوع (على سبيل المثال ، مراجع الأسلوب لخطأ no-like-method)
AA | المرجع BBBB 22 ضعفًا op vAA ، BBBBB
21 ت op vAA ، + BBBB
21 ثانية op vAA ، # + BBBB
21 ساعة op vAA ، # + BBBB0000
op vAA ، # + BBBB000000000000
21 ج op vAA ، اكتب @ BBBB
op vAA ، الحقل @ BBBB
op vAA ، method_handle @ BBBB
op vAA ، proto @ BBBB
op vAA ، سلسلة @ BBBB
الاختيار
فئة CONST
طريقة عمل مقبض
طريقة-طريقة-نوع
سلسلة نصية
AA | المرجع CC | BB 23 ضعفًا op vAA ، فيب ، vCC
22 ب في op ، BBB ، # + CC
ب | أ | المرجع CCCC 22 ت op vA ، BB ، + CCCC
22 ثانية op vA ، BB ، # + CCCC
22 ج op vA ، BB ، اكتب @ CCCC
op vA ، BB ، field @ CCCC
حالة
22 ج op vA ، BB ، fieldoff @ CCCC تنسيق مقترح لتعليمات الوصول إلى الحقول المرتبطة بشكل ثابت بالتنسيق 22 ج
Ø Ø | المرجع AAAA لو AAAA مرحبًا 30 ت op + AAAAAAAA غوتو / 32
Ø Ø | المرجع AAAA BBBB 32 ضعفًا في op ، BBBBB
AA | راجع BBBB lo BBBB مرحبًا 31 ط op vAA ، # + BBBBBBBB
31 ت op vAA ، + BBBBBBBB
31 ج op vAA ، سلسلة @ 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} ، اكتب @ 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} ، مضمّن @ BBBB

يعكس الاختيار غير المعتاد في الكتابة هنا الرغبة في إجراء العد والفهرس المرجعي له نفس التسمية الموجودة في التنسيق 3rmi.

تنسيق مقترح للتعليمات المضمنة المرتبطة invoke-static invoke-virtual بتنسيق 35 ج
AA | المرجع BBBB CCCC 3rc أو { op .. vNNNN} ، meth @ BBBB
أو { op .. vNNNN} ، site @ BBBB
في { op .. vNNNN} ، اكتب @ BBBB

حيث NNNN = CCCC+AA-1 ، أي أن A يحدد العدد 0..255 ، ويحدد C السجل الأول

3rms في { op .. vNNNN} ، vtaboff @ BBBB

حيث NNNN = CCCC+AA-1 ، أي أن A يحدد العدد 0..255 ، ويحدد C السجل الأول

تنسيق مقترح invoke-virtual مرتبط بشكل ثابت وإرشادات invoke-super للتنسيق 3rc
3rmi op {vCCCC .. vNNNN} ، inline @ BBBB

حيث NNNN = CCCC+AA-1 ، أي أن A يحدد العدد 0..255 ، ويحدد C السجل الأول

التنسيق المُقترَح للتعليمات المضمّنة المرتبطة invoke-static invoke-virtual بالتنسيق 3rc
أ | ز | المرجع BBBB F | E | D | C HHHH 45cc [ 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 4rcc op> {vCCCC .. vNNNN} ، meth @ BBBB ، proto @ HHHH

حيث NNNN = CCCC+AA-1 ، أي أن A يحدد العدد 0..255 ، ويحدد C السجل الأول

استدعاء متعدد الأشكال / النطاق
AA | مرحبًا BBBB lo BBBB BBBB BBBB 51 لتر op vAA ، # + BBBBBBBBBBBBBBBB على نطاق واسع