Страницы

Поиск по вопросам

пятница, 24 января 2020 г.

Как получить сведения о процессоре?

#ассемблер


Здравствуйте! Как можно с помощью ассемблерных вставок получить сведения о процессоре?
Дополнено.
Вот нашел команду cpuid и код:
mov ЕАХ,О
cpuid ;EAX=0001h
mov mem, ЕВХ
mov mem+4, EDX
mov mem+8, ECX ;mem='Genuinelntel'
cpuid EAX=543h (например) ,EDX = lBFh

Но как это сделать вставкой на том же C?    


Ответы

Ответ 1



Инструкция cpuid предназначена для получения информации о процессоре. Для некоторых компиляторов она доступна как расширение языка __cpuid. Пример использования int main() { int a, b; for (a = 0; a < 3; a++) { __asm("cpuid":"=a"(b) // EAX - в b (вывод) : "a"(a) // a - в EAX (ввод) : "%ebx", "%ecx", "%edx"); // cpuid всегда задействует их printf("Этот код %i дает %i\n", a, b); } return 0; }

Ответ 2



Если не получается сделать это inline-ассемблером в C, то попробуй написать на чистом ассемблере функции, возвращающие тебе нужную информацию, и собрать их в obj-файл. Этот obj файл подключи к компоновке, и в C можно будет использовать нужные функции, объявив их прототипы.

Комментариев нет:

Отправить комментарий