Определение возможностей процессора без сборки

Я искал способы определить процессор и его возможности (например, SEE, SSE2 и т. д.).

Однако все способы, которые я нашел, включали ассемблерный код с использованием инструкции cpuid. Учитывая разные способы выполнения сборки в c/c++ между компиляторами и даже целями (нет встроенной сборки для 64-битных целей в VC), я бы предпочел этого избежать.

Есть ли какая-то простая библиотека или функции ОС (как для Windows, так и для Linux) для получения этой информации?

В настоящее время меня интересуют только платформы, использующие процессоры x86 и x86-64, и мне определенно нужно поддерживать как минимум AMD и Intel.


person Fire Lancer    schedule 13.12.2009    source источник


Ответы (3)


РЕДАКТИРОВАТЬ: Сначала я искал «libcpuid», вспоминая разговор с коллегами-программистами, и поиск в Google указал мне на это страница sourceforge, которая выглядит довольно устаревшей. Затем я заметил, что это страница проекта «libcpu».

На самом деле существует libcpuid, который может удовлетворить ваши потребности.


В прошлый раз, когда я искал такую ​​библиотеку, я нашел crisscross. Хотя это С++.

Существует также информация для компьютерных пользователей.

Но я не знаю кроссплатформенной библиотеки, которая просто делает cpuid.

person Gregory Pakosz    schedule 13.12.2009

Под Linux загляните в /proc/cpuinfo

person Thorbjørn Ravn Andersen    schedule 05.02.2010

Это настолько зависит от аппаратного обеспечения --- что ОС обычно защищает вас от --- что требовать, чтобы он был кроссплатформенным, немного сложно.

Было бы полезно иметь его, но я боюсь, что вам, возможно, придется просто перечислить перекрестное произведение ЦП и функций, которые вы хотели бы поддерживать, умножить на количество ОС (здесь две) и написать тесты для всех. Я не думаю, что это было сделано, и кто-нибудь обязательно поправит меня, если я что-то упустил.

Это была бы полезная библиотека, так что удачи в начинаниях!

person Dirk Eddelbuettel    schedule 13.12.2009