• XSS.stack #1 – первый литературный журнал от юзеров форума

Коды CPUID для процессоров AMD

Roller

RAID-массив
Пользователь
Регистрация
26.05.2020
Сообщения
71
Решения
1
Реакции
54
Всем привет!
Написал небольшую утилиту для Windows на ассме - парсит базу SMBIOS, чтобы собрать инфу: о процессоре, биос, мат.плате, видео и хардах. Кому не в лом, просьба отписаться о выделенном на скрине коде CPUID, чтобы я добавил в свою базу строку с микро-архитектурой ядра CPU. На данный момент процики Intel вроде определяет правильно, а для AMD в базе почти нет сигнатур. В общем нужно соотношения кодов CPUID к строке типа "Ivy Bridge", которую можно получить в программе CPU-Z.

Из Win32API использую GetSystemFirmwareTable(), для видео D3DKMTQueryAdapterInfo(), для дисков читаю смарт DeviceIoControl() с аргументом IOCTL_SMART_RCV_DRIVE_DATA. Последняя требует админских прав, поэтому если нужна инфа о дисках, то запускать софтину нужно правой клавишей --> Admin. Исходник лежит здесь: https://board.flatassembler.net/topic.php?t=23867

smbios_v3.png
 

Вложения

  • SMBIOS_v13.zip
    5.2 КБ · Просмотры: 31
Последнее редактирование:
@corax, сейчас поле cpuid у меня заполняется верно (значение есть в таблице smbios),
но в привязанном к нему поле "Ivy Bridge" может показывать Unknown, т.к. в моей базе нет сведений о найденном коде cpuid.
по вашему линку вроде нет такой информации (или я плохо искал).

PS: мне нужна такая таблица соответствий, только для процессоров AMD
 
Zeta, я пытался уже собрать от туда инфу, но слишком мутно всё там.
вот здесь нашёл страницу, где указаны "Family/Model/Stepping" всех процессоров AMD от мала до велико.
после правки их в коды cpuid, получил ещё 42 архитектуры, которые добавил себе в базу - итого сейчас получилось 75 штук вместе с Intel.
в общем проблема с повестки снята - остались только тесты от энтузиастов.
 

Вложения

  • SMBIOS_v13.zip
    5.6 КБ · Просмотры: 21
посмотри его сорцы
спасибо, но как-то сложно они решают эту задачу.
По сути если есть значение cpuid, то проще тупо привязать к нему строку.
Далее инфо-базу можно расширять, и её размер вычисляется на автомате. Так это реализовано у меня:

C-подобный:
;// CPU Code Name -----------------
          mov     esi,[cpuBase]       ;// линк на таблицу(4) в структуре smbios
          mov     ebx,dword[esi+08]   ;// CPUID - Family\Model\Stepping
          shr     ebx,4               ;// степпинг не нужен
          mov     esi,CpuidTable
          mov     ecx,tableLen
@@:       lodsd
          cmp     ebx,eax             ;// поиск
          je      @found
          add     esi,4               ;// сл.элемент в таблице
          loop    @b
          mov     esi,unkCpu          ;// not found
          jmp     @f
@found:   mov     esi,[esi]           ;// ESI = адрес строки

@@:       invoke  SetDlgItemText,[hwnddlg],ID_CName,esi
          jmp     @EofCodeName

align 8
CpuidTable   dd   0x0006D,dohan,     0x0006E,yonah,    0x0006F,conroe,   0x000F2,netburst
             dd   0x01067,wolf,      0x0106A,bloom,    0x0106E,lynn,     0x0206C,gulf
             dd   0x02065,arra,      0x0206E,neh,      0x0206F,west,     0x03067,silver
             dd   0x0206A,sandy,     0x0206D,sandy,    0x0306A,ivy,      0x0306E,ivy
             dd   0x0306C,hass,      0x0306F,hass,     0x04065,hass,     0x04066,hass
             dd   0x0306D,broad,     0x04067,broad,    0x0406F,broad,    0x05066,broad
             dd   0x0406E,sky,       0x05065,sky,      0x0506E,sky,      0x000F4,pres
             dd   0x0506C,apollo,    0x0806E,kaby,     0x0906E,coffe,    0x0706A,gemini
             dd   0x0406A,merri,     0x0406C,charry,   0x0406D,avoton,   0x05067,phi
             dd   0x0506C,brox,      0x0506A,moor,     0x0506F,denver,   0x0606E,cougar
             dd   0x500F2,zacate,    0x800F1,naples,   0x830F1,rome,     0xA00F1,milan
             dd   0xA10F1,genoa,     0xAA0F0,bergamo,  0xA60F1,raphael,  0xB00F2,turin
             dd   0x860F0,renoir,    0x860F8,lucienne, 0x870F1,matisse,  0x8A0F0,mendocino
             dd   0xBC0F0,medusa,    0xBA0F0,medusa,   0xB90F0,venice,   0xB50F0,weisshorn
             dd   0xB70F0,sarlak,    0xB60F0,krackan,  0xB40F0,granite,  0xB30F8,strix
             dd   0xB30F0,strix,     0xB20F0,strix,    0xB10F0,turin,    0xB00F0,turin
             dd   0xA70FC,hawk,      0xA10F8,storm,    0xA50F0,cezanne,  0xA40F4,rembrandt
             dd   0xA40F0,rembrandt, 0xA30F1,badami,   0xA20F1,vermeer,  0xA00F8,chagall
             dd   0x900F0,dhyana,    0x890F8,mero,     0x890F0,vangogh,  0x830F1,starship
             dd   0x810F8,picasso,   0x800F8,colfax,   0x820F0,dali,     0x730F0,beema
             dd   0x700F0,kabini,    0x670F0,stoney,   0x660F5,bristol,  0x660F0,carrizo
             dd   0x630F8,godovari,  0x630F0,kaveri,   0x610F3,richland, 0x610F0,trinity
             dd   0x600F2,seoul,     0x600F1,valencia, 0x300F0,llano

tableLen     =    ($ - CpuidTable)/8

apollo     db   'Apollo Lake',0
arra       db   'Arrandale',0
avoton     db   'Avoton',0
badami     db   'Badami',0
beema      db   'Beema',0
bergamo    db   'Bergamo',0
bloom      db   'Bloomfield',0
bristol    db   'Bristol',0
broad      db   'Broadwell',0
brox       db   'Broxton',0
carrizo    db   'Carrizo',0
cezanne    db   'Cezanne',0
chagall    db   'Chagall',0
charry     db   'Cherry View',0
coffe      db   'Coffee Lake',0
colfax     db   'Colfax',0
conroe     db   'Conroe',0
cougar     db   'Cougar',0
dali       db   'Dali',0
denver     db   'Denverton',0
dhyana     db   'Dhyana',0
dohan      db   'Dothan',0
gemini     db   'Gemini Lake',0
genoa      db   'Genoa',0
godovari   db   'Godovari',0
granite    db   'Granite Ridge',0
gulf       db   'Gulftown',0
hass       db   'Haswell',0
hawk       db   'Hawk Point',0
ivy        db   'Ivy Bridge',0
kabini     db   'Kabini',0
kaby       db   'Kaby Lake',0
kaveri     db   'Kaveri',0
krackan    db   'Krackan Point',0
llano      db   'Llano',0
lucienne   db   'Lucienne',0
lynn       db   'Lynnfield',0
matisse    db   'Matisse',0
medusa     db   'Medusa',0
mendocino  db   'Mendocino',0
mero       db   'Mero',0
merri      db   'Merrifield',0
milan      db   'Milan',0
moor       db   'Moorefield',0
naples     db   'Naples',0
neh        db   'Nehalem',0
netburst   db   'Netburst',0
phi        db   'Phi Knights',0
picasso    db   'Picasso',0
pres       db   'Prescott',0
raphael    db   'Raphael',0
rembrandt  db   'Rembrandt',0
renoir     db   'Renoir',0
richland   db   'Richland',0
rome       db   'Rome',0
sandy      db   'Sandy Bridge',0
sarlak     db   'Sarlak',0
seoul      db   'Seoul',0
silver     db   'Silvermont',0
sky        db   'Sky Lake',0
starship   db   'Starship',0
stoney     db   'Stoney',0
storm      db   'Storm Peak',0
strix      db   'Strix Halo',0
trinity    db   'Trinity',0
turin      db   'Turin Dense',0
valencia   db   'Valencia',0
vangogh    db   'Vangogh',0
venice     db   'Venice',0
vermeer    db   'Vermeer',0
weisshorn  db   'Weisshorn',0
west       db   'Westmere',0
wolf       db   'Wolfdale',0
yonah      db   'Yonah',0
zacate     db   'Zacate',0

unkCpu     db   'Unknown',0

@EofCodeName:
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх