التصميم العام
- يهدف نموذج الآلة واصطلاحات الاتصال إلى تقليد البنى الحقيقية الشائعة واصطلاحات الاتصال على النمط C تقريبًا:
- يعتمد الجهاز على التسجيل، ويتم تثبيت الإطارات في الحجم عند الإنشاء. يتكون كل إطار من عدد معين من السجلات (تحددها الطريقة) بالإضافة إلى أي بيانات مساعدة مطلوبة لتنفيذ الطريقة، مثل (على سبيل المثال لا الحصر) عداد البرنامج ومرجع إلى ملف
.dex
الذي يحتوي على الطريقة . - عند استخدامها لقيم البت (مثل الأعداد الصحيحة وأرقام الفاصلة العائمة)، تعتبر السجلات بعرض 32 بت. يتم استخدام أزواج التسجيل المتجاورة لقيم 64 بت. لا توجد متطلبات محاذاة لأزواج التسجيل.
- عند استخدامها لمراجع الكائنات، تعتبر السجلات واسعة بما يكفي لاستيعاب مرجع واحد بالضبط.
- فيما يتعلق بتمثيل البتات،
(Object) null == (int) 0
. - يتم وضع وسيطات N للطريقة في آخر سجلات N لإطار استدعاء الطريقة بالترتيب. تستهلك الوسائط الواسعة سجلين. يتم تمرير أساليب المثيل إلى
this
المرجع كوسيطة أولى لها.
- يعتمد الجهاز على التسجيل، ويتم تثبيت الإطارات في الحجم عند الإنشاء. يتكون كل إطار من عدد معين من السجلات (تحددها الطريقة) بالإضافة إلى أي بيانات مساعدة مطلوبة لتنفيذ الطريقة، مثل (على سبيل المثال لا الحصر) عداد البرنامج ومرجع إلى ملف
- وحدة التخزين في دفق التعليمات عبارة عن كمية غير موقعة مكونة من 16 بت. يتم تجاهل بعض البتات في بعض التعليمات/يجب أن تكون صفرًا.
- لا تقتصر التعليمات بشكل مجاني على نوع معين. على سبيل المثال، لا يلزم أن تحدد التعليمات التي تنقل قيم تسجيل 32 بت بدون تفسير ما إذا كانت تقوم بتحريك القيم الصحيحة أو العائمة.
- هناك تجمعات ثابتة معدودة ومفهرسة بشكل منفصل للمراجع إلى السلاسل والأنواع والحقول والأساليب.
- يتم تمثيل البيانات الحرفية ذات مستوى البت بشكل مباشر في دفق التعليمات.
- لأنه من الناحية العملية، من غير المألوف أن تحتاج الطريقة إلى أكثر من 16 سجلاً، ولأن الحاجة إلى أكثر من ثمانية سجلات أمر شائع إلى حد معقول، فإن العديد من التعليمات تقتصر على معالجة أول 16 سجلاً فقط. عندما يكون ذلك ممكنًا بشكل معقول، تسمح التعليمات بمراجع تصل إلى أول 256 سجلًا. بالإضافة إلى ذلك، تحتوي بعض التعليمات على متغيرات تسمح بعدد أكبر من السجلات، بما في ذلك زوج من تعليمات
move
الشاملة التي يمكنها معالجة السجلات في النطاقv0
–v65535
. في الحالات التي لا يتوفر فيها متغير التعليمات لمعالجة السجل المطلوب، فمن المتوقع أن يتم نقل محتويات السجل من السجل الأصلي إلى سجل منخفض (قبل العملية) و/أو نقلها من سجل نتائج منخفض إلى سجل مرتفع التسجيل (بعد العملية). - هناك العديد من "التعليمات الزائفة" التي تُستخدم للاحتفاظ بحمولات البيانات ذات الطول المتغير، والتي يُشار إليها بالتعليمات العادية (على سبيل المثال،
fill-array-data
). لا ينبغي أبدًا مواجهة مثل هذه التعليمات أثناء التدفق الطبيعي للتنفيذ. بالإضافة إلى ذلك، يجب أن تكون التعليمات موجودة على إزاحات رمز البايت ذات الأرقام الزوجية (أي محاذاة 4 بايت). من أجل تلبية هذا المطلب، يجب أن تصدر أدوات إنشاء dex تعليماتnop
إضافية كفاصل إذا كانت هذه التعليمات غير محاذية. أخيرًا، على الرغم من أن ذلك ليس مطلوبًا، فمن المتوقع أن تختار معظم الأدوات إصدار هذه التعليمات في نهايات الطرق، وإلا فمن المحتمل أن تكون هناك حاجة إلى تعليمات إضافية للتفرع حولها. - عند تثبيتها على نظام قيد التشغيل، قد يتم تغيير بعض التعليمات وتغيير تنسيقها كتحسين للربط الثابت أثناء التثبيت. وذلك للسماح بالتنفيذ بشكل أسرع بمجرد معرفة الارتباط. راجع مستند تنسيقات التعليمات ذات الصلة للتعرف على المتغيرات المقترحة. يتم استخدام كلمة "مقترح" بشكل حكيم؛ ليس إلزاميا تنفيذ هذه.
- بناء الجملة البشرية وأساليب التذكر:
- ترتيب الوجهة ثم المصدر للوسائط.
- تحتوي بعض أكواد التشغيل على لاحقة اسم واضحة للإشارة إلى النوع (الأنواع) التي تعمل عليها:
- أكواد التشغيل العامة ذات 32 بت من النوع غير محددة.
- أكواد التشغيل ذات النوع العام 64 بت مُلحقة بـ
-wide
. - تُضاف أكواد التشغيل الخاصة بالنوع إلى نوعها (أو اختصار مباشر)، وهو أحد ما يلي:
-boolean
-byte
-char
-short
-int
-long
-float
-double
-object
-string
-class
-void
.
- تحتوي بعض أكواد التشغيل على لاحقة واضحة لتمييز العمليات المتطابقة التي لها تخطيطات أو خيارات تعليمات مختلفة. يتم فصل هذه اللواحق عن الأسماء الرئيسية بشرطة مائلة ("
/
") وهي موجودة بشكل أساسي على الإطلاق لجعل هناك تعيين واحد لواحد مع ثوابت ثابتة في الكود الذي ينشئ الملفات التنفيذية ويفسرها (أي لتقليل الغموض للبشر). - في الأوصاف هنا، يتم التأكيد على عرض القيمة (يشير، على سبيل المثال، إلى نطاق ثابت أو عدد السجلات التي يمكن تناولها) من خلال استخدام حرف لكل أربع بتات من العرض.
- على سبيل المثال، في التعليمات "
move-wide/from16 vAA, vBBBB
":- "
move
" هو كود التشغيل الأساسي، الذي يشير إلى العملية الأساسية (نقل قيمة السجل). - "
wide
" هي لاحقة الاسم، مما يشير إلى أنها تعمل على بيانات واسعة (64 بت). - "
from16
" هي لاحقة كود التشغيل، مما يشير إلى متغير يحتوي على مرجع تسجيل 16 بت كمصدر. - "
vAA
" هو سجل الوجهة (متضمنًا في العملية؛ ومرة أخرى، القاعدة هي أن وسيطات الوجهة تأتي دائمًا في المقام الأول)، والتي يجب أن تكون في النطاقv0
-v255
. - "
vBBBB
" هو السجل المصدر، والذي يجب أن يكون في النطاقv0
–v65535
.
- "
- راجع مستند تنسيقات التعليمات للحصول على مزيد من التفاصيل حول تنسيقات التعليمات المتنوعة (المدرجة ضمن "التشغيل والتنسيق") بالإضافة إلى تفاصيل حول بناء جملة كود التشغيل.
- راجع مستند تنسيق الملف
.dex
للحصول على مزيد من التفاصيل حول مكان تناسب الرمز الثانوي مع الصورة الأكبر.
ملخص مجموعة البايت كود
التشغيل والتنسيق | ذاكري / بناء الجملة | الحجج | وصف |
---|---|---|---|
0010x | لا | دورات النفايات. ملاحظة: يتم وضع علامة على التعليمات الزائفة الحاملة للبيانات باستخدام كود التشغيل هذا، وفي هذه الحالة يشير البايت عالي الترتيب لوحدة كود التشغيل إلى طبيعة البيانات. راجع "تنسيق | |
01 12x | نقل vA، vB | A: سجل الوجهة (4 بت)B: سجل المصدر (4 بت) | انقل محتويات سجل غير كائن إلى آخر. |
02 22x | نقل/from16 vAA، vBBBB | A: سجل الوجهة (8 بت)B: سجل المصدر (16 بت) | انقل محتويات سجل غير كائن إلى آخر. |
03 32x | نقل/16 vAAAA، vBBBB | A: سجل الوجهة (16 بت)B: سجل المصدر (16 بت) | انقل محتويات سجل غير كائن إلى آخر. |
04 12x | التحرك على نطاق واسع vA، vB | A: زوج تسجيل الوجهة (4 بت)B: زوج تسجيل المصدر (4 بت) | انقل محتويات زوج التسجيل إلى آخر. ملاحظة: من القانوني الانتقال من |
05 22x | تحرك على نطاق واسع / from16 vAA، vBBBB | A: زوج تسجيل الوجهة (8 بت)B: زوج تسجيل المصدر (16 بت) | انقل محتويات زوج التسجيل إلى آخر. ملحوظة: اعتبارات التنفيذ هي نفس الاعتبارات |
06 32x | التحرك على نطاق واسع / 16 vAAAA، vBBBB | A: زوج تسجيل الوجهة (16 بت)B: زوج تسجيل المصدر (16 بت) | انقل محتويات زوج التسجيل إلى آخر. ملحوظة: اعتبارات التنفيذ هي نفس الاعتبارات |
07 12x | نقل الكائن vA، vB | A: سجل الوجهة (4 بت)B: سجل المصدر (4 بت) | نقل محتويات أحد السجلات الحاملة للكائن إلى آخر. |
08 22x | نقل الكائن/from16 vAA، vBBBB | A: سجل الوجهة (8 بت)B: سجل المصدر (16 بت) | نقل محتويات أحد السجلات الحاملة للكائن إلى آخر. |
09 32x | نقل الكائن / 16 vAAAA، vBBBB | A: سجل الوجهة (16 بت)B: سجل المصدر (16 بت) | نقل محتويات أحد السجلات الحاملة للكائن إلى آخر. |
0 أ 11x | نتيجة التحرك vAA | A: سجل الوجهة (8 بت) | انقل النتيجة غير الكائنية المكونة من كلمة واحدة لأحدث invoke- kind إلى السجل المشار إليه. يجب أن يتم ذلك كتعليمات مباشرة بعد invoke- kind الذي لا ينبغي تجاهل نتيجته (كلمة واحدة، غير كائن)؛ في أي مكان آخر غير صالح. |
0 ب 11x | نقل النتيجة على نطاق واسع vAA | A: زوج تسجيل الوجهة (8 بت) | انقل نتيجة الكلمة المزدوجة لأحدث invoke- kind إلى زوج التسجيل المشار إليه. يجب أن يتم ذلك كتعليمات مباشرة بعد invoke- kind الذي لا ينبغي تجاهل نتيجته (الكلمة المزدوجة)؛ في أي مكان آخر غير صالح. |
0 ج 11x | نقل كائن نتيجة vAA | A: سجل الوجهة (8 بت) | انقل نتيجة الكائن لأحدث invoke- kind إلى السجل المشار إليه. يجب أن يتم ذلك كتعليمات مباشرة بعد invoke- kind أو filled-new-array والتي لا ينبغي تجاهل نتيجة (الكائن) الخاصة بها؛ في أي مكان آخر غير صالح. |
0د 11x | نقل الاستثناء vAA | A: سجل الوجهة (8 بت) | احفظ الاستثناء الذي تم اكتشافه للتو في السجل المحدد. يجب أن تكون هذه هي التعليمات الأولى لأي معالج استثناء لا يجب تجاهل الاستثناء الذي تم اكتشافه، ويجب أن تحدث هذه التعليمات فقط كتعليمات أولى لمعالج الاستثناء؛ في أي مكان آخر غير صالح. |
0e 10x | عودة فارغة | العودة من طريقة void . | |
0ف 11x | إرجاع vAA | A: سجل القيمة المرتجعة (8 بت) | العودة من طريقة إرجاع قيمة غير كائن بعرض واحد (32 بت). |
10 11x | العودة على نطاق واسع vAA | A: زوج تسجيل القيمة المرتجعة (8 بت) | العودة من طريقة إرجاع القيمة ذات العرض المزدوج (64 بت). |
11 11x | كائن الإرجاع vAA | A: سجل القيمة المرتجعة (8 بت) | العودة من طريقة إرجاع الكائن. |
12 11 ن | ثابت/4 فولت أمبير، #+ب | A: سجل الوجهة (4 بت)B: موقعة (4 بت) | انقل القيمة الحرفية المعطاة (تمديد الإشارة إلى 32 بت) إلى السجل المحدد. |
13 21 ثانية | const/16 vAA، #+BBBB | A: سجل الوجهة (8 بت)B: موقعة (16 بت) | انقل القيمة الحرفية المعطاة (تمديد الإشارة إلى 32 بت) إلى السجل المحدد. |
14 31ط | const vAA، #+BBBBBBBB | A: سجل الوجهة (8 بت)B: ثابت تعسفي 32 بت | انقل القيمة الحرفية المعطاة إلى السجل المحدد. |
15 21 ساعة | ثابت/ارتفاع 16 فولت أمبير، #+BBBB0000 | A: سجل الوجهة (8 بت)B: موقعة (16 بت) | انقل القيمة الحرفية المعطاة (يمين-صفر-ممتدة إلى 32 بت) إلى السجل المحدد. |
16 21 ثانية | واسع النطاق/16 فولت أمبير، #+BBBB | A: سجل الوجهة (8 بت)B: موقعة (16 بت) | انقل القيمة الحرفية المحددة (ممتدة الإشارة إلى 64 بت) إلى زوج التسجيل المحدد. |
17 31ط | عريض ثابت/32 فولت أمبير، #+BBBBBBBB | A: سجل الوجهة (8 بت)B: موقعة (32 بت) | انقل القيمة الحرفية المحددة (ممتدة الإشارة إلى 64 بت) إلى زوج التسجيل المحدد. |
18 51 لتر | vAA على مستوى ثابت، #+BBBBBBBBBBBBBBB | A: سجل الوجهة (8 بت)B: ثابت العرض المزدوج التعسفي (64 بت). | انقل القيمة الحرفية المعطاة إلى زوج التسجيل المحدد. |
19 21 ساعة | عرض ثابت/ارتفاع 16 فولت أمبير، #+BBBB000000000000 | A: سجل الوجهة (8 بت)B: موقعة (16 بت) | انقل القيمة الحرفية المعطاة (يمين-صفر-ممتدة إلى 64 بت) إلى زوج التسجيل المحدد. |
1 أ 21 ج | const-string vAA، string@BBBB | A: سجل الوجهة (8 بت)B: فهرس السلسلة | انقل مرجعًا إلى السلسلة المحددة بواسطة الفهرس المحدد إلى السجل المحدد. |
1 ب 31 ج | const-string/jumbo vAA، string@BBBBBBBB | A: سجل الوجهة (8 بت)B: فهرس السلسلة | انقل مرجعًا إلى السلسلة المحددة بواسطة الفهرس المحدد إلى السجل المحدد. |
1 ج 21 ج | فئة const-class vAA، اكتب@BBBB | A: سجل الوجهة (8 بت)B: نوع الفهرس | انقل مرجعًا إلى الفئة المحددة بواسطة الفهرس المحدد إلى السجل المحدد. في الحالة التي يكون فيها النوع المشار إليه بدائيًا، فسيقوم هذا بتخزين مرجع إلى الفئة المنحلة للنوع البدائي. |
1د 11x | مراقب إدخال vAA | A: سجل الحاملة المرجعية (8 بت) | احصل على الشاشة للكائن المشار إليه. |
1هـ 11x | مراقبة الخروج vAA | A: سجل الحاملة المرجعية (8 بت) | حرر الشاشة للكائن المشار إليه. ملاحظة: إذا كانت هذه التعليمات تحتاج إلى طرح استثناء، فيجب أن تفعل ذلك كما لو أن جهاز الكمبيوتر قد تقدم بالفعل بعد التعليمات. قد يكون من المفيد التفكير في هذا على أنه يتم تنفيذ التعليمات بنجاح (بمعنى ما)، ويتم طرح الاستثناء بعد التعليمات ولكن قبل أن تتاح الفرصة للتشغيل التالي. هذا التعريف يجعل من الممكن لطريقة ما استخدام كتلة تنظيف الشاشة الشاملة (على سبيل المثال، |
1و 21ج | تحقق من vAA، اكتب@BBBB | A: سجل الحاملة المرجعية (8 بت)B: فهرس النوع (16 بت) | قم بإلقاء ClassCastException إذا كان المرجع الموجود في السجل المحدد لا يمكن تحويله إلى النوع المشار إليه. ملحوظة: نظرًا لأن |
20 22 ج | مثيل vA، vB، type@CCCC | A: سجل الوجهة (4 بت)B: سجل الحاملة المرجعية (4 بتات)C: فهرس النوع (16 بت) | قم بالتخزين في الوجهة المحددة سجل 1 إذا كان المرجع المشار إليه مثيلًا للنوع المحدد، أو 0 إذا لم يكن كذلك. ملحوظة: نظرًا لأن |
21 12x | طول المصفوفة vA، vB | A: سجل الوجهة (4 بت)B: سجل المرجع المرجعي للصفيف (4 بتات) | قم بالتخزين في الوجهة المحددة وتسجيل طول المصفوفة المشار إليها في الإدخالات |
22 21 ج | المثيل الجديد vAA، اكتب@BBBB | A: سجل الوجهة (8 بت)B: نوع الفهرس | قم بإنشاء مثيل جديد من النوع المشار إليه، مع تخزين مرجع له في الوجهة. يجب أن يشير النوع إلى فئة غير صفيف. |
23 22 ج | صفيف جديد vA، vB، type@CCCC | A: سجل الوجهة (4 بت)B: سجل الحجمC: نوع الفهرس | إنشاء مصفوفة جديدة من النوع والحجم المشار إليهما. يجب أن يكون النوع نوع صفيف. |
24 35 ج | مصفوفة مملوءة جديدة {vC، vD، vE، vF، vG}، type@BBBB | A: حجم المصفوفة وعدد كلمات الوسيطة (4 بت)B: فهرس النوع (16 بت)C..G: سجلات الوسيطات (4 بتات لكل منها) | إنشاء مصفوفة من النوع والحجم المحددين، وملئها بالمحتويات المتوفرة. يجب أن يكون النوع نوع صفيف. يجب أن تكون محتويات المصفوفة مكونة من كلمة واحدة (أي لا توجد مصفوفات long أو double ، ولكن أنواع المراجع مقبولة). يتم تخزين المثيل الذي تم إنشاؤه كـ "نتيجة" بنفس الطريقة التي تخزن بها تعليمات استدعاء الطريقة نتائجها، لذلك يجب نقل المثيل الذي تم إنشاؤه إلى سجل مع تعليمة move-result-object اللاحقة مباشرة (إذا كان سيتم استخدامه ). |
25 3rc | مصفوفة جديدة مملوءة/نطاق {vCCCC .. vNNNN}، اكتب@BBBB | A: حجم المصفوفة وعدد كلمات الوسيطة (8 بت)B: فهرس النوع (16 بت)C: تسجيل الوسيطة الأولى (16 بت)N = A + C - 1 | إنشاء مصفوفة من النوع والحجم المحددين، وملئها بالمحتويات المتوفرة. التوضيحات والقيود هي نفس filled-new-array الموضحة أعلاه. |
26 31 طن | تعبئة بيانات المصفوفة vAA، +BBBBBBBB (مع البيانات التكميلية كما هو محدد أدناه في "تنسيق fill-array-data-payload ") | A: مرجع الصفيف (8 بت)B: إزاحة "الفرع" الموقعة لتعليمات زائفة لبيانات الجدول (32 بت) | املأ المصفوفة المحددة بالبيانات المشار إليها. يجب أن يكون المرجع لمصفوفة من العناصر الأولية، ويجب أن يطابقها جدول البيانات من حيث النوع ويجب ألا يحتوي على عناصر أكثر مما يمكن احتواؤه في المصفوفة. أي أن المصفوفة قد تكون أكبر من الجدول، وإذا كان الأمر كذلك، يتم تعيين العناصر الأولية للمصفوفة فقط، مع ترك الباقي بمفرده. |
27 11x | رمي VAA | A: سجل حامل الاستثناء (8 بت) | رمي الاستثناء المشار إليه. |
28 10 طن | انتقل إلى +AA | A: إزاحة الفرع الموقعة (8 بت) | القفز دون قيد أو شرط إلى التعليمات المشار إليها. ملاحظة: يجب ألا تكون إزاحة الفرع |
29 20 طن | غوتو/16 + AAAA | A: إزاحة الفرع الموقعة (16 بت) | القفز دون قيد أو شرط إلى التعليمات المشار إليها. ملاحظة: يجب ألا تكون إزاحة الفرع |
2a 30t | انتقل إلى/32 +AAAAAAAA | A: إزاحة الفرع الموقعة (32 بت) | القفز دون قيد أو شرط إلى التعليمات المشار إليها. |
2ب 31ت | vAA للمحول المعبأ، +BBBBBBBB (مع البيانات الإضافية كما هو محدد أدناه في "تنسيق packed-switch-payload ") | A: سجل للاختبارB: إزاحة "الفرع" الموقعة لتعليمات زائفة لبيانات الجدول (32 بت) | انتقل إلى تعليمات جديدة بناءً على القيمة الموجودة في السجل المحدد، باستخدام جدول الإزاحات المقابلة لكل قيمة في نطاق تكامل معين، أو انتقل إلى التعليمات التالية إذا لم يكن هناك تطابق. |
2 ج 31 طن | vAA للتبديل المتناثر، +BBBBBBBB (مع البيانات التكميلية كما هو محدد أدناه في "تنسيق sparse-switch-payload ") | A: سجل للاختبارB: إزاحة "الفرع" الموقعة لتعليمات زائفة لبيانات الجدول (32 بت) | انتقل إلى تعليمة جديدة بناءً على القيمة الموجودة في السجل المحدد، باستخدام جدول مرتب لأزواج إزاحة القيمة، أو انتقل إلى التعليمة التالية إذا لم يكن هناك تطابق. |
2د ..31 23x | cmp نوع vAA، vBB، vCC 2d: cml-float (تحيز lt) 2e: cmpg-float (تحيز GT) 2f: cml-double (انحياز lt) 30: cmpg-double (تحيز GT) 31: سمب-طويل | A: سجل الوجهة (8 بت)B: سجل المصدر الأول أو الزوجC: سجل أو زوج المصدر الثاني | قم بتنفيذ النقطة العائمة المشار إليها أو المقارنة long ، واضبط a على 0 إذا b == c أو 1 إذا b > c أو -1 إذا b < c . يشير "التحيز" المدرج لعمليات الفاصلة العائمة إلى كيفية التعامل مع مقارنات NaN : تُرجع تعليمات "gtتحيز" 1 لمقارنات NaN ، وتعليمات "ltتحيز" ترجع -1 . على سبيل المثال، للتحقق مما إذا كانت النقطة العائمة |
32..37 22 طن | إذا- اختبار vA، vB، +CCCC 32: إذا مكافئ 33 : إذا ني 34: إذا-لتر 35: إذا قه 36: إذا-GT 37 : إذا لو | A: سجل أولاً للاختبار (4 بت)B: التسجيل الثاني للاختبار (4 بت)C: إزاحة الفرع الموقعة (16 بت) | تفرع إلى الوجهة المحددة إذا تمت مقارنة قيم السجلين المحددين كما هو محدد. ملاحظة: يجب ألا تكون إزاحة الفرع |
38..3د 21 طن | إذا- اختبار z vAA، +BBBB 38: إذا-eqz 39: إذا نيز 3 أ: إذا-LTZ 3 ب: إذا-gez 3ج: إذا-Gtz 3D: إذا ليز | A: سجل للاختبار (8 بت)B: إزاحة الفرع الموقعة (16 بت) | تفرع إلى الوجهة المحددة إذا كانت قيمة السجل المحدد مقارنة بـ 0 كما هو محدد. ملاحظة: يجب ألا تكون إزاحة الفرع |
3e..43 10x | (غير مستعمل) | (غير مستعمل) | |
44..51 23x | المصفوفة vAA، vBB، vCC 44 : عمر 45: على مستوى العمر 46: كائن العمر 47: العمر المنطقي 48: بايت بايت 49: اجيت شار 4 أ: عمر قصير 4 ب: أبوت 4 ج: على نطاق واسع 4 د: كائن aput 4e: أبوت منطقية 4f: aput بايت 50: أبوت شار 51 : قصير | A: سجل القيمة أو الزوج؛ قد يكون المصدر أو الوجهة (8 بت)B: سجل المصفوفة (8 بت)C: سجل الفهرس (8 بت) | قم بتنفيذ عملية المصفوفة المحددة في الفهرس المحدد للمصفوفة المحددة، أو تحميلها أو تخزينها في سجل القيمة. |
52..5و 22ج | أنا مثيل vA، vB، field@CCCC 52: إيجيت 53: على نطاق واسع 54: كائن iget 55: إيجيت منطقية 56: إيجيت بايت 57: إيجيت شار 58: إيجيت-قصيرة 59 : ايبوت 5 أ: على مستوى بروتوكول الإنترنت 5 ب: كائن iput 5ج: IPut-منطقية 5 د: إيبوت بايت 5e: iput-شار 5f: iput-short | A: سجل القيمة أو الزوج؛ قد يكون المصدر أو الوجهة (4 بت)B: تسجيل الكائنات (4 بت)C: الفهرس المرجعي لحقل المثيل (16 بت) | قم بتنفيذ العملية الميدانية لمثيل الكائن المحدد مع الحقل المحدد، أو تحميله أو تخزينه في سجل القيمة. ملاحظة: تعد رموز التشغيل هذه مرشحة معقولة للارتباط الثابت، مما يؤدي إلى تغيير وسيطة الحقل لتكون إزاحة أكثر مباشرة. |
60..6 د 21 ج | s staticop vAA، field@BBBB 60 : سكت 61: على نطاق واسع 62: كائن sget 63: sget منطقية 64: sget بايت 65: سجيت شار 66: sget-قصيرة 67 : قذف 68: سبوت واسعة 69 : كائن قذف 6 أ: قيمة منطقية 6 ب: بايت سبوت 6 ج: سبوت شار 6 د: بصق قصير | A: سجل القيمة أو الزوج؛ قد يكون المصدر أو الوجهة (8 بت)B: الفهرس المرجعي للمجال الثابت (16 بت) | قم بإجراء عملية الحقل الثابت للكائن المحدد باستخدام الحقل الثابت المحدد، أو تحميله أو تخزينه في سجل القيمة. ملاحظة: تعد رموز التشغيل هذه مرشحة معقولة للارتباط الثابت، مما يؤدي إلى تغيير وسيطة الحقل لتكون إزاحة أكثر مباشرة. |
6هـ..72 35ج | استدعاء نوع {vC، vD، vE، vF، vG}، meth@BBBB 6e: الاستدعاء الظاهري 6f: الاستدعاء الفائق 70: الاستدعاء المباشر 71: استدعاء ثابت 72: واجهة الاستدعاء | A: عدد كلمات الوسيطة (4 بت)B: الفهرس المرجعي للطريقة (16 بت)C..G: سجلات الوسيطات (4 بتات لكل منها) | اتصل بالطريقة المشار إليها. قد يتم تخزين النتيجة (إن وجدت) مع متغير move-result* المناسب كالتعليمات اللاحقة مباشرة. يتم استخدام عندما يشير في الإصدار يتم استخدام يتم استخدام يتم استخدام ملاحظة: تعد رموز التشغيل هذه مرشحة معقولة للارتباط الثابت، مما يؤدي إلى تغيير وسيطة الطريقة لتكون إزاحة أكثر مباشرة (أو زوجًا منها). |
73 10x | (غير مستعمل) | (غير مستعمل) | |
74..78 3rc | استدعاء النوع / النطاق {vCCCC .. vNNNN}، meth@BBBB 74: استدعاء الظاهري/النطاق 75: استدعاء سوبر/نطاق 76: الاستدعاء المباشر/النطاق 77: استدعاء ثابت/نطاق 78: واجهة الاستدعاء/النطاق | A: عدد كلمات الوسيطة (8 بت)B: الفهرس المرجعي للطريقة (16 بت)C: تسجيل الوسيطة الأولى (16 بت)N = A + C - 1 | اتصل بالطريقة المشار إليها. راجع وصف invoke- kind الأول أعلاه للحصول على التفاصيل والتحذيرات والاقتراحات. |
79..7 أ 10x | (غير مستعمل) | (غير مستعمل) | |
7ب..8و 12x | أونوب vA، vB 7 ب: سلبي كثافة العمليات 7ج: غير صحيح 7 د: نيج طويل 7هـ: غير طويل 7f: تعويم سلبي 80: نيج مزدوج 81 : من الداخل إلى الطويل 82 : داخل إلى تعويم 83 : من الداخل إلى المزدوج 84 : طويلة إلى كثافة العمليات 85: طويل الطفو 86: طويل إلى مزدوج 87: تعويم إلى كثافة العمليات 88: تعويم إلى فترة طويلة 89: تعويم إلى مضاعفة 8 أ: مزدوج إلى int 8 ب: مزدوج إلى طويل 8ج: مزدوج إلى تعويم 8 د: من إلى بايت 8e: int-to-char 8f: من الداخل إلى القصير | A: سجل الوجهة أو الزوج (4 بت)B: سجل المصدر أو الزوج (4 بت) | تنفيذ العملية الأحادية المحددة في السجل المصدر، وتخزين النتيجة في السجل الوجهة. |
90..AF 23x | بينوب vAA، vBB، vCC 90: الإضافة 91 : الباطنة 92: متعدد كثافة العمليات 93: شعبة كثافة العمليات 94: ريم إنت 95: و كثافة العمليات 96 : أو كثافة العمليات 97: xor-int 98: شل-كثافة العمليات 99: شر-كثافة العمليات 9 أ: ushr-int 9 ب: إضافة طويلة 9ج: شبه طويلة 9 د: متعدد الطول 9e: شعبة طويلة 9f: rem-long a0: وطويلة a1: أو طويل a2: xor-long a3: شل طويل a4: طويل a5: طويل جدًا a6: إضافة تعويم a7: تعويم فرعي a8: متعدد التعويم a9: div-float أأ: ريم تعويم أب: إضافة مزدوجة التيار المتردد: شبه مزدوج إعلان: متعدد مزدوج ae: div مزدوج بالعربية: ريم مزدوج | A: سجل الوجهة أو الزوج (8 بت)B: سجل أو زوج المصدر الأول (8 بت)C: تسجيل أو زوج المصدر الثاني (8 بت) | قم بإجراء العملية الثنائية المحددة على السجلين المصدرين، وتخزين النتيجة في السجل الوجهة. ملاحظة: على عكس العمليات الرياضية |
ب0..راجع 12x | binop /2addr vA, vB b0: الوظيفة الإضافية/2addr b1: فرعي/2addr b2: مول-إنت/2addr b3: div-int/2addr b4: rem-int/2addr b5: و-int/2addr b6: أو-int/2addr b7: xor-int/2addr b8: shl-int/2addr b9: shr-int/2addr با: ushr-int/2addr ب: إضافة طويلة/2addr قبل الميلاد: فرعي طويل/2addr دينار بحريني: مول طويل/2addr يكون: div-long/2addr فرنك بلجيكي: rem-long/2addr c0: و-طويل/2addr c1: أو طويل/2addr c2: xor-long/2addr c3:shl-long/2addr c4: shr-long/2addr c5: ushr-long/2addr c6: إضافة تعويم/2addr c7: تعويم فرعي/2addr c8: متعدد التعويم/2addr c9: div-float/2addr كاليفورنيا: rem-float/2addr cb: إضافة مزدوجة/2addr نسخة إلى: فرعي/2addr قرص مضغوط: متعدد مزدوج/2addr م: شعبة مزدوجة/2addr راجع: rem-double/2addr | A: سجل أو زوج الوجهة والمصدر الأول (4 بت)B: سجل أو زوج المصدر الثاني (4 بت) | تنفيذ العملية الثنائية المحددة على السجلين المصدريين، وتخزين النتيجة في السجل المصدر الأول. ملحوظة: على عكس العمليات الحسابية |
d0..d7 22s | binop /lit16 vA, vB, #+CCCC d0: الوظيفة الإضافية/lit16 d1: rsub-int (طرح عكسي) D2: مول-إنت/ليت16 d3: div-int/lit16 d4: ريم-int/lit16 d5: و-int/lit16 d6: أو-int/lit16 d7: xor-int/lit16 | A: سجل الوجهة (4 بت)B: سجل المصدر (4 بت)C: ثابت ثابت (16 بت) | قم بإجراء العملية الثنائية المشار إليها على السجل المشار إليه (الوسيطة الأولى) والقيمة الحرفية (الوسيطة الثانية)، مع تخزين النتيجة في السجل الوجهة. ملاحظة: لا يحتوي |
د8..ه2 22ب | binop /lit8 vAA، vBB، #+CC d8: الوظيفة الإضافية/lit8 d9: rsub-int/lit8 دا: مول-إنت/ليت8 ديسيبل: div-int/lit8 العاصمة: rem-int/lit8 dd: و-int/lit8 دي: أو-int/lit8 مدافع: xor-int/lit8 e0: shl-int/lit8 e1: shr-int/lit8 e2: ushr-int/lit8 | A: سجل الوجهة (8 بت)B: سجل المصدر (8 بت)C: ثابت ثابت (8 بت) | قم بإجراء العملية الثنائية المشار إليها على السجل المشار إليه (الوسيطة الأولى) والقيمة الحرفية (الوسيطة الثانية)، مع تخزين النتيجة في السجل الوجهة. ملاحظة: انظر أدناه للحصول على تفاصيل حول دلالات |
e3..f9 10x | (غير مستعمل) | (غير مستعمل) | |
فا 45cc | استدعاء متعدد الأشكال {vC، vD، vE، vF، vG}، meth@BBBB، proto@HHHH | A: عدد كلمات الوسيطة (4 بت)B: الفهرس المرجعي للطريقة (16 بت)C: جهاز الاستقبال (4 بت)D..G: سجلات الوسيطات (4 بتات لكل منها)H: الفهرس المرجعي للنموذج الأولي (16 بت) | استدعاء طريقة التوقيع المتعددة الأشكال المشار إليها. قد يتم تخزين النتيجة (إن وجدت) مع متغير move-result* المناسب كالتعليمات اللاحقة مباشرة.يجب أن يكون مرجع الطريقة إلى أسلوب متعدد الأشكال للتوقيع، مثل java.lang.invoke.MethodHandle.invoke أو java.lang.invoke.MethodHandle.invokeExact .يجب أن يكون جهاز الاستقبال كائنًا يدعم طريقة التوقيع متعددة الأشكال التي يتم استدعاؤها. يصف مرجع النموذج الأولي أنواع الوسائط المتوفرة ونوع الإرجاع المتوقع. قد يثير كود البايت invoke-polymorphic استثناءات عند تنفيذه. تم توضيح الاستثناءات في وثائق واجهة برمجة التطبيقات (API) الخاصة بطريقة التوقيع متعددة الأشكال التي يتم استدعاؤها.موجود في ملفات Dex بدءًا من الإصدار 038 وما بعده. |
أف ب 4rcc | استدعاء متعدد الأشكال/النطاق {vCCCC .. vNNNN}، meth@BBBB، proto@HHHH | A: عدد كلمات الوسيطة (8 بت)B: الفهرس المرجعي للطريقة (16 بت)C: جهاز الاستقبال (16 بت)H: الفهرس المرجعي للنموذج الأولي (16 بت)N = A + C - 1 | استدعاء مقبض الأسلوب المشار إليه. راجع وصف invoke-polymorphic أعلاه للحصول على التفاصيل.موجود في ملفات Dex بدءًا من الإصدار 038 وما بعده. |
نادي 35ج | استدعاء مخصص {vC، vD، vE، vF، vG}، call_site@BBBB | A: عدد كلمات الوسيطة (4 بت)B: الفهرس المرجعي لموقع الاتصال (16 بت)C..G: سجلات الوسيطات (4 بتات لكل منها) | حل واستدعاء موقع الاتصال المشار إليه. قد يتم تخزين نتيجة الاستدعاء (إن وجدت) بمتغير move-result* المناسب كالتعليمات اللاحقة مباشرة.يتم تنفيذ هذه التعليمات على مرحلتين: تحليل موقع الاتصال واستدعاء موقع الاتصال. يتحقق تحليل موقع الاتصال مما إذا كان موقع الاتصال المشار إليه يحتوي على مثيل java.lang.invoke.CallSite مرتبط. إذا لم يكن الأمر كذلك، فسيتم استدعاء أسلوب رابط التمهيد لموقع الاتصال المشار إليه باستخدام الوسائط الموجودة في ملف DEX (راجع call_site_item ). يقوم أسلوب رابط bootstrap بإرجاع نسخة java.lang.invoke.CallSite التي سيتم بعد ذلك ربطها بموقع الاتصال المشار إليه في حالة عدم وجود اقتران. من المحتمل أن يكون هناك مؤشر ترابط آخر قد قام بالفعل بإجراء الاقتران أولاً، وإذا كان الأمر كذلك، فسيستمر تنفيذ التعليمات مع أول مثيل java.lang.invoke.CallSite المرتبط.يتم إجراء استدعاء موقع الاتصال على هدف java.lang.invoke.MethodHandle الخاص بمثيل java.lang.invoke.CallSite الذي تم حله. يتم استدعاء الهدف كما لو كان يتم تنفيذ invoke-polymorphic (الموصوف أعلاه) باستخدام مقبض الطريقة والوسائط الخاصة بتعليمات الاستدعاء invoke-custom كوسائط لاستدعاء مقبض الطريقة الدقيق.يتم تغليف الاستثناءات التي تم رفعها بواسطة طريقة رابط bootstrap في java.lang.BootstrapMethodError . يُطلق خطأ BootstrapMethodError أيضًا في حالة:
038 وما بعده. |
فد 3rc | استدعاء مخصص/نطاق {vCCCC .. vNNNN}، call_site@BBBB | A: عدد كلمات الوسيطة (8 بت)B: الفهرس المرجعي لموقع الاتصال (16 بت)C: تسجيل الوسيطة الأولى (16 بت)N = A + C - 1 | حل واستدعاء موقع الاتصال. راجع وصف invoke-custom أعلاه للحصول على التفاصيل.موجود في ملفات Dex بدءًا من الإصدار 038 وما بعده. |
الحديد 21 ج | const-method-handle vAA،method_handle@BBBB | A: سجل الوجهة (8 بت)B: فهرس مقبض الطريقة (16 بت) | انقل مرجعًا إلى مقبض الطريقة المحدد بواسطة الفهرس المحدد إلى السجل المحدد. موجود في ملفات Dex بدءًا من الإصدار 039 وما بعده. |
صص.٢١ج | const-method-type vAA، proto@BBBB | A: سجل الوجهة (8 بت)B: مرجع النموذج الأولي للطريقة (16 بت) | انقل مرجعًا إلى النموذج الأولي للطريقة المحدد بواسطة الفهرس المحدد إلى السجل المحدد. موجود في ملفات Dex بدءًا من الإصدار 039 وما بعده. |
تنسيق الحمولة المعبأة
اسم | شكل | وصف |
---|---|---|
معرف | قصيرة = 0x0100 | تحديد كود التشغيل الزائف |
مقاس | قصير | عدد الإدخالات في الجدول |
first_key | كثافة العمليات | قيمة حالة التبديل الأولى (والأدنى). |
الأهداف | كثافة العمليات [] | قائمة أهداف الفروع النسبية size . ترتبط الأهداف بعنوان كود تشغيل المحول، وليس بهذا الجدول. |
ملاحظة: إجمالي عدد وحدات التعليمات البرمجية لمثيل هذا الجدول هو (size * 2) + 4
.
تنسيق الحمولة النافعة متفرق
اسم | شكل | وصف |
---|---|---|
معرف | قصيرة = 0x0200 | تحديد كود التشغيل الزائف |
مقاس | قصير | عدد الإدخالات في الجدول |
مفاتيح | كثافة العمليات [] | قائمة القيم الرئيسية size ، مرتبة من الأدنى إلى الأعلى |
الأهداف | كثافة العمليات [] | قائمة بأهداف الفروع ذات size النسبي، كل منها يتوافق مع القيمة الرئيسية في نفس الفهرس. ترتبط الأهداف بعنوان كود تشغيل المحول، وليس بهذا الجدول. |
ملاحظة: إجمالي عدد وحدات التعليمات البرمجية لمثيل هذا الجدول هو (size * 4) + 2
.
تنسيق حمولة بيانات المصفوفة
اسم | شكل | وصف |
---|---|---|
معرف | قصيرة = 0x0300 | تحديد كود التشغيل الزائف |
element_width | قصير | عدد البايتات في كل عنصر |
مقاس | uint | عدد العناصر في الجدول |
بيانات | أوبايت[] | قيم البيانات |
ملاحظة: إجمالي عدد وحدات التعليمات البرمجية لمثيل هذا الجدول هو (size * element_width + 1) / 2 + 4
.
تفاصيل العمليات الحسابية
ملاحظة: يجب أن تتبع عمليات الفاصلة العائمة قواعد IEEE 754، باستخدام التدفق السفلي من التقريب إلى الأقرب والتدريجي، ما لم يُنص على خلاف ذلك.
رمز التشغيل | ج- دلالات | ملحوظات |
---|---|---|
neg-int | int32 أ؛ نتيجة int32 = -a; | تكملة ثنائية أحادية. |
ليس كثافة العمليات | int32 أ؛ نتيجة int32 = ~a; | الأحادي منها مكمل. |
نيج طويل | كثافة العمليات64 أ؛ نتيجة int64 = -a; | تكملة ثنائية أحادية. |
ليس طويل | كثافة العمليات64 أ؛ نتيجة int64 = ~a; | الأحادي منها مكمل. |
neg-float | تعويم أ؛ النتيجة العائمة = -أ؛ | نفي النقطة العائمة. |
سلبي مزدوج | مزدوج أ؛ نتيجة مزدوجة = -أ؛ | نفي النقطة العائمة. |
كثافة العمليات إلى فترة طويلة | int32 أ؛ نتيجة int64 = (int64) أ; | قم بتسجيل امتداد int32 إلى int64 . |
int-to-float | int32 أ؛ نتيجة تعويم = (تعويم) أ ؛ | تحويل int32 إلى float ، باستخدام جولة إلى أخرى. هذا يفقد الدقة لبعض القيم. |
int-to-double | int32 a ؛ نتيجة مزدوجة = (مزدوج) أ ؛ | تحويل int32 إلى double . |
منذ فترة طويلة | int64 أ ؛ int32 النتيجة = (int32) a ؛ | اقتطاع int64 في int32 . |
طويل إلى طويل | int64 أ ؛ نتيجة تعويم = (تعويم) أ ؛ | تحويل int64 إلى float ، باستخدام جولة إلى أخرى. هذا يفقد الدقة لبعض القيم. |
منذ فترة طويلة | int64 أ ؛ نتيجة مزدوجة = (مزدوج) أ ؛ | تحويل int64 إلى double ، باستخدام جولة إلى أخرى. هذا يفقد الدقة لبعض القيم. |
تطفو إلى حد | تعويم أ ؛ int32 النتيجة = (int32) a ؛ | تحويل float إلى int32 ، باستخدام مستدير الصفر. NaN و -0.0 (صفر سلبي) تحويل إلى عدد صحيح 0 . لا يمكن تحويل الحجم والقيم بحجم كبير جدًا إلى إما إلى 0x7fffffff أو -0x80000000 اعتمادًا على العلامة. |
تطفو إلى طول | تعويم أ ؛ int64 النتيجة = (int64) a ؛ | تحويل float إلى int64 ، باستخدام مستدير الصفر. تنطبق نفس قواعد الحالة الخاصة التي تنطبق هنا على float-to-int هنا ، باستثناء أن القيم خارج المدى يتم تحويلها إلى إما 0x7fffffffffffffff أو -0x8000000000000000 بناءً على علامة. |
تعويم إلى مزدوج | تعويم أ ؛ نتيجة مزدوجة = (مزدوج) أ ؛ | تحويل float إلى double ، والحفاظ على القيمة بالضبط. |
مزدوج إلى | مضاعفة أ ؛ int32 النتيجة = (int32) a ؛ | تحويل double إلى int32 ، باستخدام جولة الصفر. نفس قواعد الحالة الخاصة كما float-to-int هنا. |
مزدوج إلى طويل | مضاعفة أ ؛ int64 النتيجة = (int64) a ؛ | تحويل double إلى int64 ، باستخدام جولة الجولة الصفر. نفس قواعد الحالة الخاصة كما float-to-long هنا. |
مزدوج إلى حلو | مضاعفة أ ؛ نتيجة تعويم = (تعويم) أ ؛ | تحويل double إلى float ، باستخدام جولة إلى أكثر. هذا يفقد الدقة لبعض القيم. |
int-to بايت | int32 a ؛ int32 النتيجة = (A << 24) >> 24 ؛ | اقتطاع int32 إلى int8 ، علامة توسيع النتيجة. |
int-to-char | int32 a ؛ int32 النتيجة = a & 0xffff ؛ | اقتطاع int32 إلى uint16 ، دون تمديد علامة. |
int-to-short | int32 a ؛ int32 النتيجة = (a << 16) >> 16 ؛ | اقتطاع int32 إلى int16 ، علامة توسيع النتيجة. |
إضافة | int32 a ، b ؛ int32 النتيجة = a + b ؛ | إضافة التوحى. |
فرعي | int32 a ، b ؛ int32 النتيجة = a - b ؛ | الطرح المزدوج. |
rsub-int | int32 a ، b ؛ int32 النتيجة = b - a ؛ | الطرح عكس التكامل. |
مول- | int32 a ، b ؛ int32 النتيجة = a * b ؛ | مضاعفة التكامل المزدوج. |
div-int | int32 a ، b ؛ int32 النتيجة = a / b ؛ | تقسيم التكامل المزدوج ، يدور نحو الصفر (أي ، مقطوع إلى عدد صحيح). هذا يلقي ArithmeticException إذا b == 0 . |
rem-int | int32 a ، b ؛ int32 النتيجة = a ٪ b ؛ | تبقى التوافق بينهما بعد الانقسام. علامة النتيجة هي نفس علامة a ، ويتم تعريفها بدقة أكبر result == a - (a / b) * b هذا يلقي ArithmeticException إذا b == 0 . |
و int | int32 a ، b ؛ int32 النتيجة = a & b ؛ | bitwise و. |
أو | int32 a ، b ؛ int32 نتيجة = أ | ب؛ | bitwise أو. |
xor-int | int32 a ، b ؛ int32 النتيجة = a ^ b ؛ | bitwise xor. |
shl-int | int32 a ، b ؛ int32 النتيجة = a << (b & 0x1f) ؛ | تحول bitwise إلى اليسار (مع حجة مقنعة). |
sh-int | int32 a ، b ؛ int32 النتيجة = a >> (b & 0x1f) ؛ | موقعة bitwise موقعة اليمين (مع حجة مقنعة). |
USHR-int | uint32 a ، b ؛ int32 النتيجة = a >> (b & 0x1f) ؛ | التحول غير الموقّع بشكل صحيح (مع حجة مقنعة). |
إضافة طويلة | int64 a ، b ؛ int64 النتيجة = a + b ؛ | إضافة التوحى. |
دونج | int64 a ، b ؛ int64 النتيجة = a - b ؛ | الطرح المزدوج. |
طالبة | int64 a ، b ؛ int64 النتيجة = a * b ؛ | مضاعفة التكامل المزدوج. |
Div-Long | int64 a ، b ؛ int64 النتيجة = a / b ؛ | تقسيم التكامل المزدوج ، يدور نحو الصفر (أي ، مقطوع إلى عدد صحيح). هذا يلقي ArithmeticException إذا b == 0 . |
REM | int64 a ، b ؛ int64 النتيجة = a ٪ b ؛ | تبقى التوافق بينهما بعد الانقسام. علامة النتيجة هي نفس علامة a ، ويتم تعريفها بدقة أكبر result == a - (a / b) * b هذا يلقي ArithmeticException إذا b == 0 . |
ومنذ فترة طويلة | int64 a ، b ؛ int64 النتيجة = a & b ؛ | bitwise و. |
أو طويلة | int64 a ، b ؛ int64 نتيجة = أ | ب؛ | bitwise أو. |
XOR-LONG | int64 a ، b ؛ int64 النتيجة = a ^ b ؛ | bitwise xor. |
shl-long | int64 أ ؛ int32 ب ؛ int64 النتيجة = a << (b & 0x3f) ؛ | تحول bitwise إلى اليسار (مع حجة مقنعة). |
shlong | int64 أ ؛ int32 ب ؛ int64 النتيجة = a >> (b & 0x3f) ؛ | موقعة bitwise موقعة اليمين (مع حجة مقنعة). |
USHR-LONG | uint64 أ ؛ int32 ب ؛ int64 النتيجة = a >> (b & 0x3f) ؛ | التحول غير الموقّع بشكل صحيح (مع حجة مقنعة). |
الإضافات | تعويم أ ، ب ؛ نتيجة تعويم = A + B ؛ | إضافة نقطة عائمة. |
حلقة فرعية | تعويم أ ، ب ؛ نتيجة تعويم = أ - ب ؛ | طرح نقطة عائمة. |
ملهى | تعويم أ ، ب ؛ نتيجة تعويم = a * b ؛ | تكاثر نقطة العائمة. |
div-float | تعويم أ ، ب ؛ نتيجة تعويم = A / B ؛ | قسم نقطة العائمة. |
طلاق REM | تعويم أ ، ب ؛ نتيجة تعويم = a ٪ b ؛ | نقطة عائمة تبقى بعد التقسيم. هذه الوظيفة مختلفة عن الباقي IEEE 754 ويتم تعريفها result == a - roundTowardZero(a / b) * b |
الإضافات | مضاعفة أ ، ب ؛ نتيجة مزدوجة = A + B ؛ | إضافة نقطة عائمة. |
الفرعية | مضاعفة أ ، ب ؛ نتيجة مزدوجة = أ - ب ؛ | طرح نقطة عائمة. |
مول دوبل | مضاعفة أ ، ب ؛ نتيجة مزدوجة = a * b ؛ | تكاثر نقطة العائمة. |
Div-Double | مضاعفة أ ، ب ؛ نتيجة مزدوجة = A / B ؛ | قسم نقطة العائمة. |
rembble | مضاعفة أ ، ب ؛ نتيجة مزدوجة = A ٪ B ؛ | نقطة عائمة تبقى بعد التقسيم. هذه الوظيفة مختلفة عن الباقي IEEE 754 ويتم تعريفها result == a - roundTowardZero(a / b) * b |