Какая разница в работе CPUID на 32-битных и 64-битных машинах? - PullRequest
0 голосов
/ 20 декабря 2018

У меня вопрос: в чем разница в CPUID работе на 32-битных и 64-битных машинах?Возможно, есть некоторые различия в способе, которым мы вызываем CPUID, или в способе, которым он возвращает результат, например, мы должны проверить RAX и другие регистры, может быть информация, хранящаяся в них, отличается

1 Ответ

0 голосов
/ 27 декабря 2018

в соответствии с Intel SDM

инструкция работает одинаково для 64-битных и не 64-битных

, но даже при том, что она ведет себято же самое, имейте в виду, что инструкция CPUID очищает старшие 32 бита регистров RAX / RBX / RCX / RDX во всех режимах, поэтому, если вы укажете старшие 32 бита в упомянутых выше регистрах, вы получите 0x0.

И поскольку CPUID смотрит на EAX (и в некоторых случаях на ECX), оба приведенных ниже кода вернут одинаковые данные:

mov RAX, 0xFFFF_FFFF_0000_000
cpuid

mov RAX, 0x0
cpuid

...