Verificando opcodes de montagem Intel facilmente no Linux

Eu tenho procurado por uma ferramenta prática que imprima os códigos operacionais de qualquer instrução Intel de 64 bits ou 32 bits no Linux, por exemplo. algo comoHiew's assembler no DOS. Um serviço baseado na web também seria uma opção.

Como não consegui encontrar nenhum, fiz o meu própriobash&nbsp;script, que cria um arquivo de origem de montagem a partir de parâmetros de linha de comando (instrução [s] e <32/64>), compila, liga e desmonta e mostra as linhas corretas de desmontagem. Mas já existe algum programa que mostrariatodos&nbsp;as codificações possíveis para qualquer instrução dada, por exemplo. paramov eax,ebx? Minha abordagem usandonasm, ld&nbsp;endisasm&nbsp;obviamente só dá uma codificação possível para cada instrução.

Com este script eu posso obter as codificações usadas pornasm&nbsp;para código de 64 e 32 bits, por exemplo:

/home/user/code/asm$ showop 'nop;add eax,ebx;cpuid' 64

00000000  90                nop
00000001  01D8              add eax,ebx
00000003  0FA2              cpuid

Mas como eu poderia obter facilmente todas as codificações opcode possíveis? Já existe algum programa disponível para isso?

Aqui está o código:

#!/bin/bash

# usage: showop instructions bits

asminstr=$1
bits=$2

# asminstr="nop;nop;nop;nop;add eax,ebx;nop;nop;nop"
# bits=64

numberofinstr=`echo $asminstr | grep -o ";" | wc -l`
((numberofinstr++))

if [ -f tempasmfile.asm ]
    then
    rm tempasmfile.asm
fi
if [ -f tempobjfile.o ]
    then
    rm tempobjfile.o
fi
if [ -f tempexefile ]
    then
    rm tempexefile
fi

printf "[bits $bits]\nsection .text\nglobal _start\n\n_start:\n`echo $asminstr | sed 's/;/\\n/g'`\n" >tempasmfile.asm

nasm -f elf$bits tempasmfile.asm -o tempobjfile.o
ld tempobjfile.o -o tempexefile

if [ $bits -eq 32 ]
then
    ndisasm -b $bits -e 0x60 tempexefile | head -n $numberofinstr
elif [ $bits -eq 64 ]
then
    ndisasm -b $bits -e 0x80 tempexefile | head -n $numberofinstr
fi
rm tempasmfile.asm
rm tempobjfile.o
rm tempexefile