
Validación diferencial exhaustiva de todas las codificaciones de instrucciones AArch64 de 4.3B.
Una comparación exhaustiva de las decisiones de asignación de instrucciones A64.
Silica comprueba cada una de las 4.294.967.296 posibles palabras de instrucción A64. Compara si Capstone, LLVM, Unicorn y una tabla compilada a partir de los diagramas de codificación XML de Arm aceptan cada palabra.
Un decodificador y un diagrama de codificación no responden exactamente a la misma pregunta. Capstone y LLVM decodifican instrucciones, Unicorn intenta la ejecución, y la tabla derivada de XML de Silica coincide con los bits fijos en los diagramas de codificación de Arm. Compararlos es útil, pero una discrepancia no es automáticamente un error del decodificador.
Las instrucciones A64 tienen 32 bits de ancho, por lo que la comparación de asignación puede cubrir todo el espacio de entrada. Los recuentos de validez a continuación son exhaustivos para las versiones y la configuración fijadas. El análisis del texto de las instrucciones es por muestreo.
Estos artefactos usan ISA_A64_xml_A_profile-2026-06_mc y 256 fragmentos que cubren
las 2³² palabras.
| Resultado de asignación derivado de XML | Recuento | Proporción |
|---|---|---|
| Coincide con un patrón de codificación en alcance | 1.799.435.776 | 41,9% |
| No coincide con ningún patrón de codificación en alcance | 2.495.531.520 | 58,1% |
En los cuatro mapas de bits de validez, 723.801.678 palabras tienen al menos una clasificación diferente. Esto es el 16,9% del espacio completo de palabras. Es un recuento de discrepancias, no un recuento de errores confirmados.
Concordancia por pares con el mapa de bits de asignación derivado de XML:
| Herramienta | Concordancia |
|---|---|
| Capstone | 84,8% |
| LLVM | 87,6% |
| Unicorn | 88,3% |
Estos porcentajes no clasifican la corrección del decodificador. En particular, la tabla XML compilada no evalúa el pseudocódigo de las instrucciones, la disponibilidad de características ni todas las restricciones en tiempo de decodificación. Unicorn también responde mediante ejecución y trampas en lugar de mediante desensamblado. Cada diferencia requiere un análisis de la familia de instrucciones y de la configuración antes de poder respaldar un informe de error upstream.
Silica registró una muestra determinista de 1.000.000 de palabras de las
1.266.064.016 palabras aceptadas por las cuatro comprobaciones de validez. Las salidas no son
simétricas: Capstone y LLVM devuelven el texto completo del desensamblado, la tabla XML
devuelve solo un mnemónico, y Unicorn devuelve el marcador de posición <valid>.
El clasificador actual informa:
| Clasificación | Registros | Proporción |
|---|---|---|
| Mismo mnemónico normalizado, texto completo diferente | 862.648 | 86,3% |
| Mnemónico normalizado diferente | 137.352 | 13,7% |
El valor del 86,3% no es una tasa de errores de operandos. En la mayoría de los registros, se está comparando una instrucción completa con una referencia que solo contiene el mnemónico. El manejo de alias también sigue siendo conservador cuando no se puede demostrar una condición de alias XML a partir del texto renderizado. Estos registros son pistas para el análisis, no hallazgos sobre la corrección del decodificador.
Los archivos en artifacts/reproducers son diez registros distintos
seleccionados de los primeros cinco fragmentos de discrepancia elegibles. La selección
prioriza las categorías de texto y limita los pares repetidos (category, spec mnemonic).
Los diez archivos actuales comparan Capstone con el mnemónico derivado de XML.
Demuestran que los registros existen en el corpus generado y pueden reproducirse
a partir de una palabra de instrucción. No han sido adjudicados de forma independiente como diez
errores de Capstone, y no son evidencia de que LLVM y Unicorn coincidan en la
instrucción renderizada. Tres están marcados explícitamente como NORMALIZATION_UNCERTAIN.
El generador y el verificador son
g6_reproducers.py y
verify/g6_reproducers.py.
El barrido produce un gran conjunto de datos. silica-scope es su lector de terminal. Abre un directorio de artefactos de Silica, muestra las métricas y el mapa de 256 fragmentos, filtra los registros de desacuerdo y busca palabras individuales. También puede abrir los diez registros de ejemplo con sus limitaciones declaradas.
Instálalo desde PyPI con Python 3.11 o superior:
pipx install silica-scope
Luego ejecútalo desde un checkout de Silica o apúntalo a un directorio de artefactos:
silica-scope
silica-scope /path/to/silica/artifacts
silica-scope --report
silica-scope es un lector de Python puro. No ejecuta el barrido ni requiere las bibliotecas decodificadoras nativas. Consulta la guía del lector de terminal para los controles de teclado y el descubrimiento de artefactos.
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"]
La ruta de alto volumen está escrita en Rust y llama a cada decodificador en proceso. Almacena un bit por codificación por oráculo, lo que mantiene compacta la comparación exhaustiva y hace que la discrepancia sea una operación directa de mapa de bits. Los fallos se bisecan hasta la palabra de instrucción exacta.
Python se encarga de la compilación XML, la normalización, la generación de informes y la verificación. Los esquemas de artefactos y las reglas de muestreo están documentados en docs/formats.md. El origen de cada valor destacado es:
| Afirmación | Artefacto | Recalculado por |
|---|---|---|
| Recuento de asignaciones XML | artifacts/g1_metrics.json | G1 |
| Diferencias de validez exhaustivas | cuatro mapas de bits de validez | G2 y G5 |
| Recuentos de categorías de muestra | artifacts/g4_metrics.json | G4 |
| Porcentajes de concordancia por pares | artifacts/report/metrics.json | G5 |
| Diez registros de ejemplo seleccionados | artifacts/reproducers/*.md | G6 |
| Resumen del artefacto publicado | artifacts/result_hash.txt | G7 |
Cree el entorno fijado y compruebe que las entradas locales requeridas estén disponibles:
micromamba create -y -p ./.venv -f environment.yml
micromamba run -p ./.venv silica doctor
La especificación XML de Arm no está incluida en el repositorio debido a su licencia. silica doctor informa dónde espera encontrar Silica dicha especificación y cualquier otro requisito previo faltante.