
Исчерпывающая дифференциальная валидация всех 4,3 млрд кодировок инструкций AArch64.
Исчерпывающее сравнение решений о распределении инструкций A64.
Silica проверяет каждое из 4 294 967 296 возможных кодовых слов A64. Она сравнивает, принимают ли Capstone, LLVM, Unicorn и таблица, скомпилированная из XML-диаграмм кодирования Arm, каждое слово.
Декодер и диаграмма кодирования отвечают не на один и тот же вопрос. 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 также отвечает через выполнение и ловушки, а не через дизассемблирование. Каждое различие требует анализа семейства инструкций и конфигурации, прежде чем оно сможет обосновать отчёт об ошибке в upstream.
Silica записала детерминированную выборку из 1 000 000 слов из
1 266 064 016 слов, принятых всеми четырьмя проверками валидности. Выходные данные не
симметричны: 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 шардов, фильтрует записи о расхождениях и выполняет поиск отдельных слов. Он также может открывать десять примеров записей с указанными для них ограничениями.
Установите его из PyPI с помощью Python 3.11 или новее:
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
Спецификация XML от Arm не включена в репозиторий из-за лицензии. silica doctor сообщает, где Silica ожидает её найти, а также о любых других отсутствующих предварительных требованиях.
Артефакты, добавленные в репозиторий, можно проверить без повторного запуска сканирования:
silica-scope artifacts