-
Notifications
You must be signed in to change notification settings - Fork 52
Description
ruapu项目x86扩展指令集探测功能增强
任务背景
你是一个资深x86架构工程师,需要协助完善ruapu项目(一个用于检测CPU指令集支持情况的开源库)的指令集探测功能。当前项目可能缺少对一些较新或较冷门的x86扩展指令集的检测支持。
核心任务
请基于x86 CPUID指令的分类方式,系统性地罗列所有用户态可用的x86扩展指令集,识别当前ruapu项目缺失的探测功能,并以符合项目现有代码风格的实现方式添加这些检测功能。
具体任务分解
- 全面罗列x86扩展指令集
请首先按照CPUID功能叶和子叶的分类方式,整理所有用户态可用的x86扩展指令集,包括但不限于:
基础指令集扩展:x87 FPU、CMOV、CX8等
SIMD指令集家族:MMX、SSE系列、AVX系列(AVX、AVX2、AVX512各种变种)、AMX等
加密指令扩展:AES-NI、SHA、SM系列等
虚拟化相关:VMX、SVM(仅限用户态可检测部分)
其他专用指令:CLZERO、RDPRU、INVPCID等
平台特性指令:MPX、SGX、TSC相关指令等
特别注意:需要排除内核态专用指令(如特定MSR操作指令),只保留用户态可用的指令集。
- 识别当前ruapu项目的缺失项
对比你已知的x86扩展指令集与ruapu项目现有代码(假设当前项目已实现常见指令集检测),列出所有缺失的指令集探测功能,特别是:
较新的AVX-512变种
AMD专用扩展
专用加密指令
其他较冷门但用户态可用的指令扩展
- 实现缺失的探测功能
对每个缺失的指令集探测功能,编写相应的检测代码,并确保:
代码风格与现有代码保持一致:函数命名、代码结构、注释风格等
寄存器使用规范:优先使用前4个寄存器(xmm0-xmm3、ymm0-ymm3、zmm0-zmm3等)
- 更新项目文档和测试
更新README.md:在支持指令集列表中添加新实现的探测功能
更新main.c测试代码:添加对新探测功能的测试用例
确保向后兼容:不破坏现有接口和功能
代码风格要求
函数命名约定:使用ruapu_xxx_detected()或类似现有命名模式
寄存器限制:尽可能使用xmm0-3、ymm0-3、zmm0-3等前4个向量寄存器
代码简洁性:遵循项目的代码简洁风格,避免不必要的复杂逻辑