26 lines
1 KiB
Markdown
26 lines
1 KiB
Markdown
|
|
# api
|
||
|
|
|
||
|
|
## `cpuid(leaf: int, subleaf: int = 0) -> tuple[int, int, int, int]`
|
||
|
|
|
||
|
|
сырой вызов инструкции `CPUID`, возвращает `(eax, ebx, ecx, edx)`.
|
||
|
|
|
||
|
|
## `rdtsc() -> int`
|
||
|
|
|
||
|
|
сырое значение счётчика тактов процессора (инструкция `RDTSC`), монотонно растёт.
|
||
|
|
|
||
|
|
## `vendor() -> str`
|
||
|
|
|
||
|
|
строка вендора CPU, например `GenuineIntel` или `AuthenticAMD`.
|
||
|
|
|
||
|
|
## `brand() -> str`
|
||
|
|
|
||
|
|
полная строка модели процессора из расширенных leaf'ов CPUID.
|
||
|
|
|
||
|
|
## `has_feature(name: str) -> bool`
|
||
|
|
|
||
|
|
проверка бита фичи в CPUID без риска упасть на CPU без её поддержки. кидает `ValueError` если имя не из `FEATURES`.
|
||
|
|
|
||
|
|
## `FEATURES: dict[str, tuple[int, str, int]]`
|
||
|
|
|
||
|
|
словарь `имя -> (leaf, регистр, номер бита)`. поддерживаются: `sse`, `sse2`, `sse3`, `ssse3`, `fma`, `sse4_1`, `sse4_2`, `popcnt`, `aes`, `avx`, `rdrnd`, `avx2`, `avx512f`.
|