
التحقق التفاضلي الشامل لجميع ترميزات تعليمات AArch64 البالغ عددها 4.3 مليار.
مقارنة شاملة لقرارات تخصيص تعليمات A64.
يفحص Silica كل كلمة من الكلمات المحتملة لتعليمات A64 وعددها 4,294,967,296. ويقارن ما إذا كانت Capstone وLLVM وUnicorn وجدول مُجمَّع من مخططات ترميز Arm المستندة إلى XML تقبل كل كلمة.
المُفكِّك ومخطط الترميز لا يجيبان عن السؤال نفسه بالضبط. تفكّ Capstone وLLVM التعليمات، وتحاول Unicorn تنفيذها، بينما يطابق جدول Silica المشتق من XML البتات الثابتة في مخططات ترميز Arm. ومقارنتها مفيدة، لكن عدم التطابق ليس بالضرورة خطأً في المُفكِّك.
تعليمات A64 بعرض 32 بت، لذا يمكن لمقارنة التخصيص أن تغطي فضاء الإدخال بالكامل. وأعداد الصلاحية أدناه شاملة للإصدارات والإعدادات المثبَّتة. أما تحليل نص التعليمات فهو قائم على العينات.
تستخدم هذه المخرجات ISA_A64_xml_A_profile-2026-06_mc و256 شريحة تغطي
جميع الكلمات البالغ عددها 2³².
| نتيجة التخصيص المشتقة من XML | العدد | النسبة |
|---|---|---|
| يطابق نمط ترميز ضمن النطاق | 1,799,435,776 | 41.9% |
| لا يطابق أي نمط ترميز ضمن النطاق | 2,495,531,520 | 58.1% |
عبر خرائط البتات الأربع للصلاحية، هناك 723,801,678 كلمة لها تصنيف مختلف واحد على الأقل. وهذا يمثل 16.9% من فضاء الكلمات الكامل. وهو عدد حالات عدم الاتفاق، وليس عدد الأخطاء المؤكدة.
الاتفاق الثنائي مع خريطة التخصيص المشتقة من XML:
| الأداة | الاتفاق |
|---|---|
| Capstone | 84.8% |
| LLVM | 87.6% |
| Unicorn | 88.3% |
هذه النسب لا ترتب صحة المُفكِّك. وعلى وجه الخصوص، لا يقيّم جدول XML المُجمَّع الشيفرة الزائفة للتعليمات، ولا توافر الميزات، ولا كل قيود وقت فك الترميز. كما أن Unicorn يجيب عبر التنفيذ والاستثناءات لا عبر فك التجميع. وكل اختلاف يحتاج إلى تحليل عائلة التعليمات والإعدادات قبل أن يدعم تقرير خطأ في المنبع.
سجّل Silica عينة حتمية من 1,000,000 كلمة من أصل 1,266,064,016 كلمة تقبلها
فحوص الصلاحية الأربعة جميعها. والمخرجات غير متناظرة: فـ Capstone وLLVM
يعيدان نص فك تجميع كامل، وجدول XML يعيد اسم تعليمة (mnemonic) فقط، وUnicorn
يعيد العنصر النائب <valid>.
يُبلِّغ المصنِّف الحالي بما يلي:
| التصنيف | السجلات | النسبة |
|---|---|---|
| اسم تعليمة مُطبَّع متطابق، نص كامل مختلف | 862,648 | 86.3% |
| اسم تعليمة مُطبَّع مختلف | 137,352 | 13.7% |
قيمة 86.3% ليست معدل خطأ في المعاملات. ففي معظم السجلات، تُقارَن تعليمة كاملة بمرجع يحتوي على اسم التعليمة فقط. كما يبقى التعامل مع الأسماء المستعارة متحفظًا عندما يتعذر إثبات شرط اسم مستعار في XML من النص المُصيَّر. هذه السجلات مؤشرات للتحليل، وليست نتائج حول صحة المُفكِّك.
الملفات في artifacts/reproducers هي عشرة سجلات
مميزة اختيرت من أول خمس شرائح مؤهلة لعدم الاتفاق. ويُفضِّل الاختيار فئات النص
ويحد من تكرار أزواج (category, spec mnemonic). وتقارن الملفات العشرة الحالية
جميعها Capstone باسم التعليمة المشتق من XML.
إنهم يثبتون أن السجلات موجودة في المجموعة المُولَّدة ويمكن إعادة إنتاجها
من كلمة تعليمات واحدة. لم يتم الحكم عليها بشكل مستقل على أنها عشرة
أخطاء في Capstone، وهي ليست دليلاً على أن LLVM وUnicorn يتفقان على
التعليمة المُصيَّرة. ثلاثة منها مُعلَّمة صراحةً بـ NORMALIZATION_UNCERTAIN.
المُولِّد والمُدقِّق هما
g6_reproducers.py و
verify/g6_reproducers.py.
يُنتج المسح مجموعة بيانات كبيرة. silica-scope هو قارئها الطرفي. يفتح دليل مخرجات Silica، ويعرض المقاييس وخريطة الـ 256 شريحة، ويُرشِّح سجلات التعارض، ويبحث عن كلمات فردية. يمكنه أيضًا فتح السجلات العشرة النموذجية مع قيودها المذكورة.
ثبِّته من PyPI باستخدام Python 3.11 أو أحدث:
pipx install silica-scope
ثم شغّله من نسخة Silica محلية أو وجّهه إلى دليل أثر:
silica-scope
silica-scope /path/to/silica/artifacts
silica-scope --report
silica-scope هو قارئ بلغة بايثون خالصة. لا يقوم بتشغيل المسح ولا يتطلب
مكتبات فك الترميز الأصلية. راجع دليل قارئ الطرفية للاطلاع على
عناصر التحكم بلوحة المفاتيح واكتشاف المخرجات.
flowchart LR
XML["Arm XML encoding diagrams"] --> SPEC["compiled allocation matcher"]
SPEC --> SWEEP["parallel 32-bit sweep"]
CAP["Capstone"] --> SWEEP
LLVM["LLVM"] --> SWEEP
UNI["Unicorn"] --> SWEEP
SWEEP --> MAP["validity bitmaps"]
MAP --> DIFF["exhaustive XOR comparison"]
DIFF --> CORPUS["classified disagreement corpus"]
CORPUS --> OUT["metrics · examples · result hash"]
المسار عالي الحجم مكتوب بلغة Rust ويستدعي كل مفكك ترميز داخل العملية نفسها. يخزّن بتة واحدة لكل ترميز لكل أوراكل، مما يُبقي المقارنة الشاملة مُحكمة ويجعل عدم التوافق عملية bitmap مباشرة. تُختزل الأعطال ثنائيًا إلى كلمة التعليمات الدقيقة.
تتولى Python تجميع XML والتطبيع وإعداد التقارير والتحقق. مواصفات مخططات المخرجات وقواعد أخذ العينات موثّقة في docs/formats.md. مصدر كل قيمة رئيسية هو:
| الادعاء | المخرج | يُعاد حسابه بواسطة |
|---|---|---|
| عدد تخصيصات XML | artifacts/g1_metrics.json | G1 |
| فروق الصلاحية الشاملة | أربع خرائط بت للصلاحية | G2 وG5 |
| أعداد فئات العينات | artifacts/g4_metrics.json | G4 |
| نسب التوافق الثنائي | artifacts/report/metrics.json | G5 |
| عشرة سجلات أمثلة مختارة | artifacts/reproducers/*.md | G6 |
| بصمة المخرج المنشورة | artifacts/result_hash.txt | G7 |
أنشئ البيئة المثبّتة وتحقق من توفر المدخلات المحلية المطلوبة:
micromamba create -y -p ./.venv -f environment.yml
micromamba run -p ./.venv silica doctor
مواصفات XML الخاصة بـ Arm ليست مُضمَّنة في المستودع بسبب ترخيصها. يُبلِّغ silica doctor
عن المكان الذي تتوقع Silica العثور عليها فيه وعن أي متطلبات أساسية أخرى مفقودة.
يمكن فحص العناصر المُودَعة في المستودع دون إعادة تشغيل عملية المسح:
silica-scope artifacts
تصف وصفة make all مراحل التشغيل من جديد، لكنها ليست حاليًا أمر إعادة إنتاج جاهزًا للاستخدام المباشر. لا يزال تسليم G4 الخاص بها يتطلب تحويل JSON الخزان إلى قائمة كلمات، ويتم تمرير ثلاثة إجماليات للمجموعة النصية كوسائط صريحة. يشير ملف Makefile إلى هذه الفجوة مباشرةً. لا ينبغي تمثيل تشغيل نشر جديد على أنه مُعاد إنتاجه حتى تتم أتمتة هذا التسليم وتتدفق الإجماليات من المخرجات المولّدة.
يشغّل الأمر silica verify سبع بوابات مملوكة للمستودع. تتحقق من بيانات وصفية لتجميع XML، وتغطية الشظايا، وأدلة التطبيع، وبنية المجموعة النصية، والمقاييس المنشورة، وسجلات الأمثلة، وتجزئة المخرجات. إن تسميتها بوابات أمر مقصود: فهي توفر فحوصات اتساق، لكنها ليست تطبيقات مستقلة ولا تأكيدًا خارجيًا لأخطاء وحدة فك الترميز.
micromamba run -p ./.venv silica verify
تُجري G4 وG5 بثًا لمجموعة البيانات الكبيرة الخاصة بالاختلافات وخرائط البتات الخاصة بالصلاحية، لذا فإن هذا ليس فحصًا سريعًا للتوثيق. شغّله قبل نشر أو تغيير الادعاءات الرقمية. بالنسبة لتعديلات README العادية، راجع مخرجات JSON المُستشهد بها وأجّل المُتحقق الكامل حتى يصبح التغيير جاهزًا للنشر.
يتضمن مُطابق XML أنماط ترميز A64 الأساسية وAdvanced SIMD بعد مرشح النطاق الخاص بالمُترجم. ويستثني SVE وSVE2 وSME وفئات أخرى مدرجة في artifacts/g1_metrics.json. أما A32/T32 وRISC-V واختبارات الذهاب والإياب للمُجمّع والتكافؤ الدلالي وصحة التنفيذ العامة فهي خارج نطاق هذه الدراسة.