objdump for旧ARM7TDMI(ARMv4T)显示了更新架构的说明?

时间:2009-06-15 22:20:50

标签: arm objdump

我非常关心GNU的成功,并希望得到一些反馈 如何处理ARM的objdump中的潜在错误....

我正在检查“objdump -D --target = binary -m arm7tdmi”的输出并看到 古代ARM7TDMI内核中不存在的指令。

(我正在查看一个随机位文件并将其视为原始二进制文件而不是ELF文件。)

例如,mrcc,blx和ldc2仅出现在ARMv5或更高版本中,但我看到了它们 在输出中使用上面的命令行开关。

(我在“-m armv4t”中看到同样的问题。)

我正在使用Ubuntu 9.04版本2.19.1-multiarch。

这是一个真正的错误还是我必须使用不同的开关?

此致

克里斯

2 个答案:

答案 0 :(得分:2)

嗯,这不是一个错误的错误,因为如果您正在查看旧的二进制文件,您不会期望在指令流中看到这样的指令,因此它们不会出现。

因此它仍能正确显示正确的代码。

如果强制objdump反汇编程序反汇编不包含代码的内存区域,而是其他类型的数据(例如,使用标志-D),则可能会出现以下异常结果:

  • 非指令的数据显示为在该架构上有效的指令
  • 非指令的数据显示为在该架构上无效的指令。
  • 非指令的数据显示为非法指令(哦不!)

我发现很难对其中任何一个进行处理,因为你确实指定了-D,这就是它的作用。

如果你能指出一个正确有效的指令流由于重新定义具有不同效果的指令编码而被不同地解码的例子,那么我认为这将是一个真正的错误。

您的示例是否会对您的工作造成一些问题(包括不便)?

答案 1 :(得分:2)

我也被其他一些架构所吸引(非ARM)。 Objdump不知道你是在拆解代码还是数据部分,并会尽力拆解它 - 包括常量和其他数据部分。