
सभी 4.3B AArch64 निर्देश एन्कोडिंग्स का विस्तृत विभेदक सत्यापन।
A64 निर्देश-आवंटन निर्णयों की एक विस्तृत तुलना।
Silica 4,294,967,296 संभावित A64 निर्देश शब्दों में से प्रत्येक की जाँच करता है। यह तुलना करता है कि Capstone, LLVM, Unicorn, और Arm के XML एन्कोडिंग आरेखों से संकलित एक तालिका प्रत्येक शब्द को स्वीकार करते हैं या नहीं।
एक डिकोडर और एक एन्कोडिंग आरेख ठीक एक ही प्रश्न का उत्तर नहीं देते। Capstone और LLVM निर्देशों को डिकोड करते हैं, Unicorn निष्पादन का प्रयास करता है, और Silica की XML-व्युत्पन्न तालिका Arm के एन्कोडिंग आरेखों में निश्चित बिट्स से मेल खाती है। उनकी तुलना करना उपयोगी है, लेकिन एक असंगति स्वतः ही डिकोडर बग नहीं होती।
A64 निर्देश 32 बिट चौड़े होते हैं, इसलिए आवंटन तुलना पूरे इनपुट स्थान को कवर कर सकती है। नीचे दी गई वैधता गणनाएँ पिन किए गए संस्करणों और कॉन्फ़िगरेशन के लिए संपूर्ण हैं। निर्देश-पाठ विश्लेषण नमूनाकृत है।
ये आर्टिफ़ैक्ट ISA_A64_xml_A_profile-2026-06_mc और सभी 2³² शब्दों को कवर करने वाले
256 शार्ड्स का उपयोग करते हैं।
| 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,266,064,016 शब्दों में से 1,000,000 शब्दों का एक नियतात्मक नमूना रिकॉर्ड किया
जिन्हें चारों वैधता जाँचों ने स्वीकार किया। आउटपुट सममित नहीं हैं: Capstone और LLVM
पूर्ण डिसअसेम्बली पाठ लौटाते हैं, XML तालिका केवल एक नेमोनिक लौटाती है, और 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-शार्ड मैप दिखाता है, असहमति रिकॉर्ड फ़िल्टर करता है, और व्यक्तिगत शब्दों को खोजता है। यह दस उदाहरण रिकॉर्ड उनकी बताई गई सीमाओं के साथ भी खोल सकता है।
इसे 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 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 में लिखा गया है और प्रत्येक डिकोडर को इन-प्रोसेस कॉल करता है। यह प्रति ऑरेकल प्रति एन्कोडिंग एक बिट संग्रहीत करता है, जो व्यापक तुलना को संक्षिप्त रखता है और असहमति को सीधा बिटमैप ऑपरेशन बनाता है। क्रैश को सटीक निर्देश शब्द तक द्विभाजित किया जाता है।
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
Arm का XML विनिर्देश इसके लाइसेंस के कारण वेंडर नहीं किया गया है। silica doctor बताता है कि Silica इसे कहाँ खोजने की अपेक्षा करता है और अन्य कौन-सी पूर्वापेक्षाएँ अनुपलब्ध हैं।
चेक-इन किए गए आर्टिफ़ैक्ट्स का निरीक्षण स्वीप को दोबारा चलाए बिना किया जा सकता है:
silica-scope artifacts
make all रेसिपी एक नए रन के लिए चरणों को सूचीबद्ध करती है, लेकिन यह वर्तमान में
एक टर्नकी प्रतिलिपि निर्माण कमांड नहीं है। इसका G4 हैंडऑफ़ अभी भी रिज़र्वॉयर JSON को
एक शब्द सूची में बदलने की आवश्यकता रखता है, और तीन कॉर्पस कुल स्पष्ट
आर्ग्युमेंट के रूप में पास किए जाते हैं। Makefile उस अंतराल को सीधे इंगित करता है। एक नए प्रकाशन रन को
तब तक पुनरुत्पादित के रूप में प्रस्तुत नहीं किया जाना चाहिए जब तक कि वह हैंडऑफ़ स्वचालित न हो जाए और
कुल उत्पन्न आउटपुट से प्रवाहित न हों।
silica verify कमांड सात रिपॉज़िटरी-स्वामित्व वाले गेट चलाती है। वे XML
संकलन मेटाडेटा, शार्ड कवरेज, सामान्यीकरण साक्ष्य, कॉर्पस संरचना,
प्रकाशित मेट्रिक्स, उदाहरण रिकॉर्ड, और आर्टिफैक्ट हैश की जाँच करते हैं। उन्हें गेट
कहना जानबूझकर है: वे संगतता जाँच प्रदान करते हैं, लेकिन वे डिकोडर बग्स के स्वतंत्र
कार्यान्वयन या बाहरी पुष्टि नहीं हैं।
micromamba run -p ./.venv silica verify