
सभी 4.3B AArch64 निर्देश एन्कोडिंग्स का विस्तृत विभेदक सत्यापन।
एक पूर्ण मानचित्र कि कहाँ AArch64 डिकोडर आर्किटेक्चर से असहमत होते हैं।
Silica सभी 4,294,967,296 संभावित A64 निर्देश शब्दों में से प्रत्येक को स्कैन करता है, Capstone, LLVM, और Unicorn की तुलना Arm के मशीन-पठनीय विनिर्देश से करता है, और अंतरों को पुनरुत्पादनीय प्रमाण में बदल देता है।
एक डिसअसेम्बलर का "वैध" कहना आसान है। यह जानना कठिन है कि यह सही है या नहीं। अधिकांश डिफरेंशियल परीक्षण यह तो बता सकते हैं कि उपकरण असहमत हैं, लेकिन वे स्वतंत्र ओरेकल के बिना सही उत्तर की पहचान नहीं कर सकते। Silica उस ओरेकल के रूप में Arm के XML रिलीज़ का उपयोग करता है।
A64 एक असामान्य रूप से गहन प्रयोग संभव बनाता है: निर्देश ठीक 32 बिट चौड़े होते हैं, इसलिए पूरा एन्कोडिंग स्थान परिमित है और गणना के लिए व्यावहारिक है। Silica उस गुण का लाभ उठाता है। नीचे दिए गए वैधता परिणाम कोई अनुमान या फ़ज़िंग अभियान नहीं हैं; प्रत्येक संभावित शब्द की जाँच की गई थी।
ये परिणाम ISA_A64_xml_A_profile-2026-06_mc (Armv9.6-A) का उपयोग करते हैं। स्वीप को
256 स्वतंत्र रूप से सत्यापित शार्ड्स में विभाजित किया गया था जो सभी 2³² एन्कोडिंग को कवर करते हैं।
| परिणाम | गणना | पूर्ण स्थान का हिस्सा |
|---|---|---|
| Arm विनिर्देश द्वारा आवंटित | 1,799,435,776 | 41.9% |
| Arm विनिर्देश द्वारा अनावंटित | 2,495,531,520 | 58.1% |
| वैधता असहमतियाँ पाई गईं | 723,801,678 | 16.9% |
| न्यूनतम अपस्ट्रीम-तैयार पुनरुत्पादक | 10 | — |
क्या कोई एन्कोडिंग वैध है, इस पर विनिर्देश के साथ सहमति:
| डिकोडर | सहमति | दृश्य |
|---|---|---|
| Capstone | 84.8% | █████████████████████████░░░░░ |
| LLVM | 87.6% | ██████████████████████████░░░░ |
| Unicorn | 88.3% | ██████████████████████████░░░░ |
बड़े वैधता अंतर के पहचानने योग्य कारण हैं। Unicorn वैधता का परीक्षण एक निर्देश को
निष्पादित करके और ट्रैप का निरीक्षण करके करता है, जबकि अन्य ओरेकल निष्पादन के बिना
डिकोड करते हैं। कुछ क्षेत्र डिकोड-समय की UNDEFINED स्थितियों से भी प्रभावित हैं
जिनका संकलित विनिर्देश ओरेकल मूल्यांकन नहीं करता। Silica इन सीमाओं को परिणाम से
छिपाने के बजाय दर्ज करता है।
प्रस्तुत मनेमोनिक्स और ऑपरेंड की तुलना करना वैधता बिट रिकॉर्ड करने से बहुत अधिक खर्चीला है। इसलिए Silica पाठ का मूल्यांकन 1,266,064,016 उम्मीदवारों में से निकाले गए 1,000,000 शब्दों के नियतात्मक नमूने पर करता है जहाँ सभी चार ओरेकल एन्कोडिंग को वैध मानते हैं। यह एक नमूनाकृत परिणाम है और इसे जानबूझकर व्यापक वैधता आंकड़ों से अलग रखा गया है।
| नमूने के भीतर वर्गीकरण | रिकॉर्ड | हिस्सा |
|---|---|---|
| ऑपरेंड रेंडरिंग भिन्न | 862,648 | 86.3% |
| सामान्यीकरण को समीक्षा की आवश्यकता | 137,352 | 13.7% |
यह नमूना सामान्यीकरण और प्रस्तुति कार्य का पता लगाने के लिए उपयोगी है; यह प्रत्येक पाठ्य रेंडरिंग की व्यापक कवरेज का दावा नहीं करता।
स्वीप इंजन एक बड़ा शोध डेटासेट उत्पन्न करता है। silica-scope उस डेटासेट को सुलभ बनाने के लिए साथी टर्मिनल ऐप है। यह एक तैयार Silica आर्टिफ़ैक्ट निर्देशिका खोलता है और आपको मुख्य मेट्रिक्स ब्राउज़ करने, 256-शार्ड एन्कोडिंग मानचित्र का निरीक्षण करने, असहमतियों को फ़िल्टर करने, किसी भी 32-बिट शब्द को देखने, और फाइलिंग-तैयार पुनरुत्पादकों को पढ़ने देता है।
इसे Python 3.11 या नए संस्करण के साथ PyPI से इंस्टॉल करें:
pipx install silica-scope
फिर इसे Silica चेकआउट से चलाएँ या इसे किसी आर्टिफ़ैक्ट निर्देशिका की ओर इंगित करें:
silica-scope
silica-scope /path/to/silica/artifacts
silica-scope --report
silica-scope एक शुद्ध-Python रीडर है जिसमें कोई नेटिव डिकोडर निर्भरता नहीं है। यह
व्यापक स्वीप को लॉन्च नहीं करता, और यह रिपॉज़िटरी के छोटे प्रकाशित आर्टिफ़ैक्ट सेट को
सहजता से संभालता है। पैन, कीबोर्ड नियंत्रण, और आर्टिफ़ैक्ट खोज विकल्पों के लिए
टर्मिनल रीडर गाइड देखें।
flowchart LR
XML["Arm XML specification"] --> SPEC["compiled spec oracle"]
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 · reproducers · result hash"]उच्च-मात्रा पथ Rust में लिखा गया है और प्रत्येक डिकोडर को इन-प्रोसेस कॉल करता है। यह प्रत्येक ओरेकल के लिए प्रति एन्कोडिंग एक बिट संग्रहीत करता है, जो व्यापक तुलना को संक्षिप्त रखता है और असहमति को सीधा बिटमैप ऑपरेशन बनाता है। क्रैश को सटीक निर्देश शब्द तक बाइसेक्ट किया जाता है।
Python विनिर्देश संकलन, सामान्यीकरण, रिपोर्टिंग, और स्वतंत्र सत्यापन परत को संभालता है। आर्टिफ़ैक्ट स्कीमा, नमूनाकरण नियम, और ज्ञात सीमाएँ docs/formats.md में प्रलेखित हैं।
पिन किया गया वातावरण बनाएँ और जाँचें कि आवश्यक स्थानीय इनपुट उपलब्ध हैं:
micromamba create -y -p ./.venv -f environment.yml
micromamba run -p ./.venv silica doctor
Arm का XML विनिर्देश इसके लाइसेंस के कारण वेंडर नहीं किया गया है। silica doctor
बताता है कि Silica इसे कहाँ खोजने की अपेक्षा करता है और कोई अन्य अनुपलब्ध पूर्वापेक्षाएँ क्या हैं।
तैयार चेकआउट से पूरी पाइपलाइन चलाने के लिए:
make all
यह एक पूर्ण 2³² स्वीप है, कोई त्वरित स्मोक टेस्ट नहीं। यह संकलित ओरेकल, शार्ड रिकॉर्ड, वैधता बिटमैप, असहमति कॉर्पस, प्रकाशित मेट्रिक्स, पुनरुत्पादक, और एक स्थिर SHA-256 परिणाम हैश उत्पन्न करता है।
सात स्वतंत्र सत्यापनकर्ता कच्चे आर्टिफ़ैक्ट से परियोजना के दावों की पुनर्गणना करते हैं। वे किसी उत्पन्न सारांश पर भरोसा नहीं करते, और प्रत्येक सत्यापनकर्ता के पास एक फ़िक्स्चर है जो साबित करता है कि यह उस दोष का पता लगाता है जिसकी वह रक्षा करता है। कोई छोड़ी गई या अनंतिम स्थिति नहीं है।
micromamba run -p ./.venv silica verify
पिन किए गए डिकोडर संस्करण और ताज़ा पुनर्गणित परिणाम हैश अलग-अलग रनों को तुलनीय बनाते हैं। सत्यापन लक्ष्य और उनकी वर्तमान स्थिति GOALS.yml में दर्ज हैं।
Silica वर्तमान में बेस A64 और Advanced SIMD डिकोडिंग को कवर करता है। SVE, SVE2, SME, A32/T32, RISC-V, असेंबलर राउंड ट्रिप, और सामान्य निष्पादन परीक्षण v1 अध्ययन के बाहर हैं।
निकटतम प्रेरणा Sandsifter है, जो x86 के परिवर्तनीय-लंबाई निर्देश स्थान का अन्वेषण करता है। Silica व्यवस्थित संदेह की उसी भावना को AArch64 पर लागू करता है, जहाँ निश्चित-चौड़ाई एन्कोडिंग और एक स्वतंत्र विनिर्देश एक पूर्ण, निर्णीत तुलना की अनुमति देते हैं।
Apache 2.0 — देखें LICENSE