x86-instruction-test-vectors
收藏Hugging Face2026-06-26 更新2026-06-29 收录
下载链接:
https://huggingface.co/datasets/BinPrey/x86-instruction-test-vectors
下载链接
链接失效反馈官方服务:
资源简介:
该数据集名为x86-64指令测试向量,旨在提供x86-64架构指令的真实硬件行为数据。通过在实际CPU硬件上执行每个指令编码并记录执行前后的寄存器与标志状态,数据集捕获了硅片实测行为,而非基于模型或模拟器的预测结果,因此能够反映架构文档中未定义的实现特定行为,如指令对标志位的实际影响。数据内容由x86Tester工具生成:每个测试用例针对单一指令编码,设置已知的输入寄存器和标志状态,在调试器环境中运行指令后读取输出状态。输入经过扫描以确保覆盖每个可达到的输出位。指令在固定的代码基地址(0x04000001)执行,地址相关结果已记录在输出中。数据集覆盖通用寄存器、XMM寄存器、x87 ST寄存器和标志寄存器。排除的指令类包括:MMX、YMM和ZMM(AVX和AVX-512)、掩码寄存器、绑定寄存器、瓦片寄存器、APX寄存器、具有隐式内存操作数的指令,以及非确定性或环境读取指令(如RDTSC、RDRAND和CPUID)。若主机CPU未实现某些扩展(如Intel主机上的SSE4a、XOP、FMA4和TBM),则相应指令被跳过。数据集按CPU型号组织为多个配置,每个配置对应一个独立的parquet文件,以处理器品牌字符串及其系列、型号和步进信息命名,确保不同硅片结果互不冲突。数据列包括:指令助记符(mnemonic)、完整汇编代码(asm)、指令字节的十六进制编码(encoding)、执行前寄存器/标志值的JSON映射(inputs)、执行后寄存器/标志值的JSON映射(outputs,若指令故障则为空),以及可能引发的异常类型(exception)。寄存器与标志值以原始小端字节的十六进制形式表示。该数据集适用于CPU指令集测试、逆向工程、模拟器与模型验证、编译器优化分析以及计算机体系结构研究等场景。
The dataset is named x86-64 Instruction Test Vectors and aims to provide real hardware behavior data for x86-64 architecture instructions. By executing each instruction encoding on actual CPU hardware and recording register and flag states before and after execution, the dataset captures silicon-measured behavior rather than predictions based on models or simulators, thus reflecting implementation-specific behaviors not defined in architectural documentation, such as actual effects of instructions on flags. The data content is generated by the x86Tester tool: each test case targets a single instruction encoding, sets known input register and flag states, runs the instruction in a debugger environment, and then reads the output state. Inputs are scanned to ensure coverage of each reachable output bit. Instructions are executed at a fixed code base address (0x04000001), with address-dependent results recorded in the outputs. The dataset covers general-purpose registers, XMM registers, x87 ST registers, and flag registers. Excluded instruction classes include: MMX, YMM and ZMM (AVX and AVX-512), mask registers, bound registers, tile registers, APX registers, instructions with implicit memory operands, and non-deterministic or environment-reading instructions (e.g., RDTSC, RDRAND, and CPUID). If certain extensions are not implemented by the host CPU (e.g., SSE4a, XOP, FMA4, and TBM on Intel hosts), corresponding instructions are skipped. The dataset is organized by CPU model into multiple configurations, each corresponding to a separate parquet file named with the processor brand string and its family, model, and stepping information, ensuring no conflict between different silicon results. Data columns include: instruction mnemonic (mnemonic), full assembly code (asm), hexadecimal encoding of instruction bytes (encoding), JSON map of register/flag values before execution (inputs), JSON map of register/flag values after execution (outputs, empty if the instruction faults), and the type of exception that may be raised (exception). Register and flag values are represented in raw little-endian byte hexadecimal form. The dataset is suitable for scenarios such as CPU instruction set testing, reverse engineering, simulator and model validation, compiler optimization analysis, and computer architecture research.
创建时间:
2026-06-25
搜集汇总
数据集介绍

构建方式
该数据集通过x86Tester工具在真实硬件上捕获每条x86-64指令的精确行为而构建。每个测试用例首先设定已知的输入寄存器与标志状态,随后在调试器框架(Windows上使用调试API,Linux上使用ptrace)内执行指令,并回读执行后的状态。通过遍历输入空间,确保每条指令的每个可达输出位均被充分测试。所有指令均以固定基址0x04000001执行,对于地址依赖的结果,其计算输出已直接记录于输出字段中。
特点
数据集收录了来自多款Intel与AMD处理器型号的实测数据,包括11代至13代酷睿及锐龙系列,每款CPU独立存储为Parquet文件,并以处理器品牌字符串及其家族、型号、步进命名配置,确保不同硅片结果互不干扰。每条记录包含指令助记符、完整反汇编、编码字节、输入输出寄存器与标志状态(以JSON格式存储)以及可能的异常类型。这些数据反映了真实的硅片行为,而非模拟或模型预测,能捕捉到架构文档中未定义的标志位值。
使用方法
用户可通过Hugging Face Datasets库加载所需配置,例如加载11代Intel酷睿i7-1165G7的数据:`load_dataset("x86-instruction-test-vectors", "11th_Gen_Intel_R_Core_TM_i7_1165G7_2_80GHz_f6m140s1")`。每条记录的输入输出字段为JSON格式字符串,可解析后用于对比不同处理器上同一指令的行为差异、验证反汇编工具或模拟器的正确性,亦可用于分析异常触发条件。注意标志位值为十六进制小端字节表示,如`01000000`对应进位标志`0x00000001`。
背景与挑战
背景概述
x86-64指令集架构自诞生以来,一直是现代计算系统的基石,其复杂性与日俱增,导致指令行为尤其是标志位操作中存在大量未公开或未文档化的细节。x86-instruction-test-vectors数据集由BinPrey团队创建,旨在通过在实际硬件上执行每条指令编码并记录寄存器与标志位的最终状态,提供一种基于实测硅片行为的地面真值,而非依赖模拟器或处理器模型。该数据集涵盖了Intel和AMD多代处理器(如11代至13代Core系列及锐龙系列)的实测数据,为逆向工程、编译器验证、CPU调试与安全分析等核心研究问题提供了不可替代的参考。其影响力体现在填补了处理器行为形式化验证的空白,使得研究者能基于真实硬件输出对比和校正理论模型,对计算机体系结构领域产生了深远影响。
当前挑战
该数据集解决的领域问题核心在于x86-64指令行为的模糊性与不确定性问题,尤其是那些架构文档标记为“未定义”的标志位结果,以及不同硅片实现间的行为差异。传统依赖模拟器或文档的方式无法捕捉硬件特有的非线性行为,导致编译器优化、安全漏洞分析及逆向工程中频繁出现偏差。在构建过程中,团队面临的主要挑战包括:设计一个能够在多种硬件平台上可移植的测试框架,以应对Windows和Linux系统调试API的差异;确保输入状态的全覆盖,使得每个可到达的输出比特均被充分测试;以及处理指令执行时的固件依赖性与地址相关性,例如RIP相对寻址的运算结果,需要精确记录输出而非仅依赖指令执行时的上下文。此外,跨代处理器的兼容性测试与大量测试向量的高效存储也是不可忽视的技术难点。
常用场景
经典使用场景
在计算机体系结构与逆向工程领域,x86-instruction-test-vectors数据集凭借其对x86-64指令在真实硬件上行为的精确捕获,成为验证反汇编器、模拟器及二进制分析工具正确性的黄金标准。该数据集通过记录每条指令执行前后的寄存器与标志位状态,为研究指令级语义提供了无可辩驳的硅片级事实依据,尤其适用于评估CPU实现中架构文档所定义的未定义行为,从而在处理器设计与安全审计中发挥基石作用。
衍生相关工作
围绕该数据集衍生了一系列开创性工作,包括基于真实硬件轨迹的指令覆盖率增强算法、跨微架构的指令行为映射模型,以及用于检测模拟器偏差的差异分析工具。这些工作不仅丰富了x86Tester工具链的功能,还催生了如Unicorn Engine的硬件校准模块等下游项目,形成了从数据采集到验证反馈的完整研究生态。
数据集最近研究
最新研究方向
在微架构安全与逆向工程领域,该数据集为x86-64指令的硬件级真实行为提供了前所未有的细粒度基准,支持分析不同代际Intel与AMD处理器在未文档化标志位和异常行为上的实现差异。当前前沿研究集中于利用这类高保真测试向量进行CPU隐蔽指令侧信道攻击的检测、微码补丁的行为验证,以及基于实际硅片行为而非模拟器的逆向分析工具开发。该数据集跨越从Skylake到Zen 5的多种架构,成为支撑硬件漏洞挖掘、指令集一致性测试与微架构隐秘行为建模的关键基础设施,深刻推动了后摩尔时代低层安全评估的实证化进程。
以上内容由遇见数据集搜集并总结生成



