ARM指令解码

时间:2012-07-16 06:33:29

标签: c assembly arm instruction-set

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

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

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分: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