Легко проверять коды операций сборки Intel в Linux

Я искал практический инструмент, который печатал бы коды операций любой 64-битной или 32-битной инструкции Intel в Linux, например. что-то вродеHiew's ассемблер в дос. Веб-сервис также будет одним из вариантов.

Как я нене могу найти ни одного, я сделал свой собственныйbash скрипт, который создает исходный файл сборки из параметров командной строки (инструкция [s] и <32/64>), компилирует, связывает и разбирает его и показывает правильные строки разборки. Но есть ли уже какая-то программа, которая показала бывсе возможные кодировки для любой данной инструкции, например. заmov eax,ebx? Мой подход с использованием,nasmld а такжеndisasm очевидно, дает только одну возможную кодировку для каждой инструкции.

С помощью этого скрипта я могу получить кодировки, используемыеnasm для 64 и 32-битного кода, например:

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

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

Но как я мог легко получить все возможные кодировки кода операции? Для этого уже есть какая-нибудь программа?

Вот's код:

#!/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

Ответы на вопрос(1)

Ваш ответ на вопрос