Features

Features struc
    Note        BYTE ?
    exNote      BYTE ?
    MnemOrd     WORD ?
    FirstOper   BYTE ?
    SecondOper  BYTE ?
    ThirdOper   BYTE ?
    FourthOper  BYTE ?
    FifthOper   BYTE ?
    iSet        BYTE ?
Features ends

  • Note - особая характеристика опкода, которая не свойственна для большинства других.

    Возможные значения.

    curr_id=1
    enum       UD64,UD16_32,DIFF64_OPC,   WaitPfx,   x87,MNEM16_DIFF,MNEM16_DFUD64,TwoPDepBut66
    enum TwoPDependNOW3DMNEM_DIF,MNEM67_DIF,FGROUPPfxDepend, FGROUP_MOD11
    enum     RegAvxwm_ch,    modmsd,      WMBZ,sg_opc,     wm_chf,           W1

    NullNoteCode
       equ 0 - особых характеристик нет.
    UD64           - неопределенная инструкция только в 64-битном режиме.
    UD16_32        - инструкция определена только в 64-битном режиме.
    DIFF64_OPC     - в 64-битном и в унаследованых режимах этот опкод представляет разные инструкции.
    WaitPfx        - наличие префикса wait у FPU инструкции или просто wait/fwait.
    MNEM16_DIFF    - другая мнемоника если размер операнда по умолчанию 16-битный.
    MNEM16_DFUD64  - тоже что MNEM16_DIFF и UD64 только вместе взятые
    MNEM_DIF       - мнемоника зависит от размера операнда по умолчанию.
    MNEM67_DIF     - мнемоника зависит от размера аддресса по умолчанию.
    wm_ch          - бит VEX.W определяет мнемонику.
    modmsd         - поле mode определяет мнемонику.
    WMBZ           - бит VEX.W должен быть сброшен
    sg_opc         - инструкции без ModRM байта vzeroupper и vzeroall.
    wm_chf         - FMA3 инструкции.
    W1             - бит VEX.W должен быть установлен.

  • exNote - еще один байт характеристики опкода.

    Возможные значения.

    curr_id=1
    enum  no32opj32no,framel,op_lock, op_rep,rep_n_e,CSdNA
    enum m1l_avx,xop2op,xop3op, xop4op,nrev3op,nrev4op

    NullNoteCode
      equ 0 - особых характеристик нет.
    no32op        - в 64-битном режиме у инструкции не может быть 32-битного операнда.
    j32no         - в 64-битном режиме инструкция не может передать управление на 32-битный аддресс.
    framel        - для фреймовых инструкций enter,leave и retn.
    op_lock       - означает что перед текущим опкодом может находится префикс lock (0F0h), если
    Instruction.mode!= 11b.
    op_rep        - для текущего опкода возможно использование префикса rep (0F3h).
    rep_n_e       - для текущего опкода возможно использование префиксов repe/repne (0F3h/0F2h).
    CSdNA         - означает что размер операндов не зависит от бита CS.D.
    m1l_avx       - бит VEX.L должен быть установлен.
    xop2op        - у AVX инструкции 2 операнда вектора.
    xop3op        - у AVX инструкции 3 операнда вектора и бит VEX.W определяет их порядок.
    xop4op        - у AVX инструкции 4 операнда вектора и бит VEX.W определяет их порядок.
    nrev3op       - у AVX инструкции 3 операнда вектора.
    nrev4op       - у AVX инструкции 4 операнда вектора.

  • MnemOrd - номер мнемоники в списке мнемоник. Номера можете посмотреть в файле include/dsmhelp.inc. 

  • FirstOper,SecondOper,ThirdOper,FourthOper,FifthOper - это характеристики операндов, равенство нулю означает отсутствие операнда. Полный список возможных значений с нотацией из AMD`шного мануала для расшифровки можете посмотреть здесь. Там есть подробные описания только некоторых констант. Если у вас нет 3 части AMD`шного мануала, то скачать его будет не лишним, чтобы разобраться. 
  • iSet - номер группы к которой принадлежит инструкция.

    Возможные значения перечислены с использованием макроса
    enum
    curr_id=1
    enum      ibasic, icmpxchgxb,    icmovcc,i3dprefetch,   iclflush,     imovbe,     icrc32, iprefetch
    enum   ilongmode, ipclmulqdq,       iaes, ixsaverstr, i64sysctrl,       itsc,    irdtscp,  irdwrmsr
    enum isyscallret, ienterexit,       isvm,   isysctrl,  iisysctrl,       isse, issemmxext,issemmxbsc
    enum     issemmx,  issebasic,ifxsaverstr,      isse2,   isse2mmx, ibasicsse2,isse2mmxext,isse2basic
    enum       isse3,   isse3mmx,   isse3fpu,     issse3,issse3mmxex,     isse4a,     isse41, isse41bsc
    enum      isse42,       immx,    immxx87,  immxbasic,       ix87, ix87cmovcc,    ix87mmx,    i3dnow
    enum   i3dnowx87,  i3dnowext,       ivmx,      ifma4,       ixop,       iavx,    iaesavx,     if16c
    enum       ifma3,      ibmi1,      ibmi2,      iavx2,    iaclmul,  ifsgsbase,    irdrand,      itbm

    Супер группа Группа Архитектура Описание
    Basic ibasic - обычные инструкции.
    icmpxchgxb - cmpxchg/8b/16b.
    icmovcc - условная пересылка данных.
    i3dprefetch AMD64 инструкции prefetch и prefetchw.
    icflush - clflush.
    imovbe - movbe.
    icrc32 - crc32.
    iprefetch - инструкции prefetch\nta\t0\t1\t2.
    ilongmode - обычные инструкции в LONG MODE.
    New instructions,
    CPUID
    ipclmulqdq - pclmulqdq.
    iaes - специальные инструкции для шифрования
    ixsaverstr - сохранение/восстановление состояния медиа регистров.
    ifsgsbase - сохранение/восстановление базы сегментов fs и gs.
    irdrand - генерация случайных чисел инструкцией rdrand.
    System i64sysctrl - обычная, для управления системой в LONG MODE.
    itsc - rdtsc.
    irdtscp - rdtscp.
    irdwrmsr - инструкции rdmsr и wrmsr.
    isyscallret - инструкции syscall и sysret, для плоской модели памяти.
    ienterexit - инструкции sysenter и sysexit.
    isvm AMD64 виртуализация SVM.
    isysctrl - обычная, для управления системой.
    iisysctrl Intel64 обычная, для управления системой.
    SSE isse - 128-битные медиа инструкции.
    issemmxext - 64-битные медиа инструкции.
    issemmxbsc - 64-битные медиа инструкции, у которых операндом может быть
    регистр общего назначения.
    issemmx - 128-битные медиа инструкции, у которых операндом может быть 
    64-битный медиа регистр.
    issebasic - 128-битные медиа инструкции, у которых операндом может быть
    регистр общего назначения.
    ifxsaverstr - сохранение/восстановление состояния медиа регистров.
    SSE2 isse2 - 128-битные медиа инструкции.
    isse2mmx - 128-битные медиа инструкции, у которых операндом может быть 
    64-битный медиа регистр.
    ibasicsse2 - инструкции lfence, mfence и movnti.
    isse2mmxext - 64-битные медиа инструкции.
    isse2basic - 128-битные медиа инструкции, у которых операндом может быть
    регистр общего назначения.
    SSE3 isse3 - 128-битные медиа инструкции.
    isse3mmx - 128-битные медиа инструкции, у которых операндом может быть 
    64-битный медиа регистр.
    isse3fpu - fisttp.
    SSSE3 issse3 Intel64 128-битные медиа инструкции.
    issse3mmxex Intel64 128-битные медиа инструкции, у которых операндом может быть 
    64-битный медиа регистр.
    SSE4A isse4a AMD64 128-битные медиа инструкции.
    SSE4.1 isse41 - 128-битные медиа инструкции.
    isse41bsc - 128-битные медиа инструкции, у которых операндом может быть
    регистр общего назначения.
    SSE4.2 isse42 - 128-битные медиа инструкции.
    MMX immx - 64-битные медиа инструкции.
    immxx87 - emms.
    immxbasic - 64-битные медиа инструкции, у которых операндом может быть
    регистр общего назначения.
    FPU ix87 - fpu-инструкции.
    ix87cmovcc - условная пересылка данных.
    ix87mmx - инструкции сохранения/восстановления fpu-регистров, в которых
    потом разместили 64-битные медиа регистры.
    3DNOW i3dnow AMD64 64-битные медиа инструкции.
    i3dnowx87 AMD64 femms.
    i3dnowext AMD64 дополнительные 3DNOW инструкции.
    VMX ivmx Intel64 виртуализация VMX.
    XOP и FMA4 (SSE5A после ревизии) ixop AMD64 128 и 256-битные медиа инструкции.
    ifma4 AMD64
    AVX iavx - 128 и 256-битные медиа инструкции.
    iaesavx -
    iaclmul -
    AVX2 iavx2 Intel64 128 и 256 битные медиа инструкции.
    FMA3 ifma3 Intel64 128 и 256 битные медиа инструкции.
    F16C if16c - конвертация 16-битных чисел с плавающей точкой в 32-битные и наоборот.
    BMI ibmi1 - целочисленые инструкции с VEX префиксом.
    ibmi2 -
    TBM itbm AMD64 целочисленные инструкции с VEX или XOP префиксом.
  • Сайт управляется системой uCoz