Этот файл имеет довольно хороший список инструкций по сборке и соответствующий им набор инструкций для использования с vim:
https://raw.githubusercontent.com/Shirk/vim-gas/master/syntax/gas.vim
Если у вас есть objdump в вашей системе, просто выгрузить двоичный файл как сборку, с
objdump -d FILEPATH
Таким образом, комбинируя эти две вещи, вы можете перечислить, какие семейства используются двоичным файлом. Я создал скрипт Python, который я использовал для автоматизации этого в прошлом.
http://pastebin.com/raw/AaRZdQLc
Примеры выходов:(Это один имеет инструкции SSE4)
$ ./binary_families.py /bin/busybox
These instruction families were used:
186_Base, 386_Base, 8086_Base, ARM_THUMB, Base, KATMAI_Base, KATMAI_MMX, KATMAI_SSE, NEHALEM_Base, P6_Base, PENT_3DNOW, PENT_Base, PENT_MMX, PRESCOTT_SSE3, SANDYBRIDGE_AVX, SSE2, SSE41, SSE42, X64_Base, X64_MMX, X64_SSE, X64_SSE2
These instructions could not be categorized:
bndmov, cltd, cltq, cmova, cmovae, cmovb, cmovbe, cmove, cmovg, cmovge, cmovl, cmovle, cmovne, cmovns, cmovs, cqto, cvtsi2sdl, cwtl, decl, divl, divq, flds, fldt, fstpt, idivl, ja, jae, jb, jbe, je, jg, jge, jl, jle, jne, jnp, jns, jp, js, leaveq, lock, movabs, movsbl, movsbq, movsbw, movslq, movswl, movswq, movzbl, movzwl, mull, negl, nopl, nopw, notb, notq, rep, repnz, repz, seta, setae, setb, setbe, sete, setg, setge, setl, setle, setne, setnp, setns, setp, tzcnt, vinserti128, vmovdqu64
(Это не так)
$ ./binary_families.py /bin/ls
These instruction families were used:
186_Base, 386_Base, 8086_Base, ARM_THUMB, KATMAI_SSE, P6_Base, PENT_MMX, SSE2, X64_Base, X64_MMX, X64_SSE, X64_SSE2
These instructions could not be categorized:
cltq, cmova, cmovae, cmovb, cmovbe, cmove, cmovg, cmovge, cmovle, cmovne, cmovns, cmovs, fadds, fildll, fistpll, flds, fldt, fstpt, ja, jae, jb, jbe, je, jg, jge, jl, jle, jne, jns, jo, js, movabs, movsbl, movslq, movzbl, movzwl, nopl, nopw, rep, repnz, repz, seta, setb, sete, setg, setge, setl, setle, setne, setp