1

我需要用 C 解码 ARM(ARM926EJ) 指令。我有 32 位十六进制指令。我想解码并获取操作码操作数。任何人都知道这方面的任何好材料。

注意我查看了 QEMU translate.c 文件。但它是如此复杂,甚至不知道为什么要做什么。

4

2 回答 2

5

假设您不想/不能使用程序为您执行此操作,您可以参考ARM 参考手册

其中有专门用于指令编码的部分。

于 2012-07-16T11:08:57.693 回答
4

我使用结合了 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
于 2012-07-16T18:05:38.110 回答