-Поиск по дневнику

Поиск сообщений в rss_forum_sources_ru

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 29.07.2007
Записей:
Комментариев:
Написано: 80


Определение микроархитектуры CPU

Вторник, 30 Июня 2020 г. 01:05 + в цитатник
Jin X: Не мог пройти мимо и не соптимизировать таблицу :)

    format pe console
    include 'win32ax.inc'
    entry start
    ;---------
    .data
    archtable dw 0x006d, 0x006e, 0x006f, 0x00f2, 0x1067, 0x106a, 0x106e, 0x206c
    dw 0x2065, 0x206e, 0x206f, 0x3067, 0x216a, 0x206d, 0x316a, 0x306e
    dw 0x316c, 0x316f, 0x4165, 0x4066, 0x316d, 0x4167, 0x416f, 0x5066
    dw 0x416e, 0x5165, 0x506e, 0x00f4, 0x506c, 0x806e, 0x906e, 0x706a
    dw 0x406a, 0x406c, 0x406d, 0x5067, 0x506c, 0x506a, 0x506f, 0x606e
    ; 0x?1?? - флаг повтора строки (т.е. когда имя архитектуры для следующего кода то же)
    archtablelen = ($-archtable)/2
    archnames:
    doеhan db 'Dothan',0
    yonah db 'Yonah',0
    conroe db 'Conroe',0
    netburst db 'NetBurst',0
    wolfdale db 'Wolfdale',0
    bloomfield db 'Bloomfield',0
    lynnfield db 'Lynnfield',0
    gulftown db 'Gulftown',0
    arrandale db 'Arrandale',0
    nehalem db 'Nehalem',0
    westmere db 'Westmere',0
    silvermont db 'Silvermont',0
    sandybridge db 'Sandy Bridge',0
    ivybridge db 'Ivy Bridge',0
    haswell db 'Haswell',0
    broadwell db 'Broadwell',0
    skylake db 'Sky Lake',0
    prescott db 'Prescott',0
    apollolake db 'Apollo Lake',0
    kabylake db 'Kaby Lake',0
    coffeelake db 'Coffee Lake',0
    geminilake db 'Gemini Lake',0
    merrifield db 'Merrifield',0
    cherryview db 'Cherry View',0
    avoton db 'Avoton',0
    phiknights db 'Phi Knights',0
    broxton db 'Broxton',0
    moorefield db 'Moorefield',0
    denverton db 'Denverton',0
    cougarmount db 'Cougar Mountain',0
    unknown db 'Unknown',0
    ;//---------
    .code
    start: mov eax,1
    cpuid
    push eax
    shr eax,4 ; Stepping не нужен
    and ah,0xF0 ; Type тоже не нужен
    xchg ebx,eax ; EBX = Family/Model
    cld
    mov edi,archnames ; имена микроархитектур
    mov esi,archtable ; таблица
    mov edx,archtablelen ; кол-во элементов таблицы
    xor eax,eax ; обнуляем старшую часть EAX
    .next: lodsw
    mov ecx,eax ; CH and 1 = флаг повтора строки
    and ah,0xF0 ; удаляем флаг повтора строки
    cmp ebx,eax ; проверяем код из таблицы
    je .found
    shr ch,1 ; проверяем флаг повтора строки
    jc @F ; та же строка
    salc ; AL = 0
    repne scasb ; пропускаем строку (ECX достаточно велик)
    @@: dec edx
    jnz .next
    .found:
    pop eax ; код Family/Model/Stepping
    cinvoke printf,<'CPUID code: %X --> %s',10>, eax, edi
    cinvoke getch
    cinvoke exit,0
    ;//**********************************
    section '.idata' import data readable
    library msvcrt,'msvcrt.dll'
    import msvcrt, printf,'printf',exit,'exit',getch,'_getch'
Поправил так же опечатки в названиях, типа Nehalen -> Nehalem, Coffe -> Coffee, Lnights -> Knights, Montain -> Mountain, Charry -> Cherry.
Вообще, есть вопросы по поводу некоторых названий. К примеру, Cherry View, как я понял, это вообще планшет, Moorefield - смартфон, а Avoton - какое-то серверное название в микроархитектуре Silvermont. А вот Goldmont, Tremont, Ice Lake, Tiger Lake и пр. нет в списке вообще.
https://en.wikipedia.org/wiki/List_of_Intel...roarchitectures

core-i7, откуда этот список?

Добавлено
Плюс, есть микроархитектуры, а есть кодовые имена. К примеру, есть кодовые имена Sandy Bridge и Ivy Bridge, оба они относятся к микроархитектуре Sandy Bridge.
https://en.wikipedia.org/wiki/List_of_Intel_codenames
Короче, минимум поллитра нужно :D

https://forum.sources.ru/index.php?showtopic=419088&view=findpost&p=3833496

Метки:  

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку