C で ARM(ARM926EJ) 命令をデコードする必要があります。16 進数の 32 ビット命令があります。オペコードオペランドをデコードして取得したい。誰でもこれに適した資料を知っています。
NB QEMU translate.c ファイルを調べました。しかし、それは非常に複雑で、なぜ何をしているのかさえわかりません。
C で ARM(ARM926EJ) 命令をデコードする必要があります。16 進数の 32 ビット命令があります。オペコードオペランドをデコードして取得したい。誰でもこれに適した資料を知っています。
NB QEMU translate.c ファイルを調べました。しかし、それは非常に複雑で、なぜ何をしているのかさえわかりません。
プログラムを使用したくない/使用できない場合は、ARMリファレンスマニュアルを参照してください。
その中には、命令のエンコード専用のセクションがあります。
これを行うには、gas と objdump を組み合わせたスクリプトを使用します。もっと良い方法があると確信していますが、これは私にとってはうまくいきます。
#!/bin/sh
cat > /tmp/foo.S <<EOF
.text
.arm
.word $1
EOF
arm-linux-gnueabi-as /tmp/foo.S -o /tmp/foo.o
echo "ARM: " `arm-linux-gnueabi-objdump -d /tmp/foo.o | grep " 0:"`
echo "Thumb:" `arm-linux-gnueabi-objdump --disassembler-options=force-thumb -d /tmp/foo.o | grep " 0:"`
rm -rf /tmp/foo.o /tmp/foo.S