Este arquivo tem uma boa lista de instruções de montagem e seu conjunto de instruções correspondente para uso com o vim:
Se você tem objdump em seu sistema, é simples descarregar um binário como assembly, com
objdump -d FILEPATH
Portanto, combinando essas duas coisas, você pode listar quais famílias são usadas por um binário. Eu criei um script python que eu usei para automatizar isso no passado.
Exemplos de saídas:
(Este tem instruções 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
(isso não acontece)
$ ./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