用于旧ARM7TDMI(ARMv4T)的objdump,显示用于新体系结构的说明?

用于旧ARM7TDMI(ARMv4T)的objdump,显示用于新体系结构的说明?,arm,objdump,Arm,Objdump,我非常关心GNU的成功,希望得到一些反馈 如何处理ARM的objdump中的潜在错误 我正在检查“objdump-D--target=binary-m arm7tdmi”的输出,并看到 古老的ARM7TDMI内核上不存在的说明 (我正在查看一个随机位文件,并将其视为原始二进制文件,而不是ELF文件。) 例如,mrcc、blx和ldc2仅出现在ARMv5或更高版本中,但我看到了它们 在上面带有命令行开关的输出中 (我发现“-m armv4t”也存在同样的问题。) 我使用的是Ubuntu9.04版本

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

我正在检查“objdump-D--target=binary-m arm7tdmi”的输出,并看到 古老的ARM7TDMI内核上不存在的说明

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

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

(我发现“-m armv4t”也存在同样的问题。)

我使用的是Ubuntu9.04版本的2.19.1-multiarch

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

真诚地


chris

确切地说,这不是一个bug,因为如果你正在查看一个旧的二进制文件,你不会期望在指令流中看到这样的指令,所以它们不会出现

因此,它仍然可以正确显示正确的代码

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

  • 非指令的数据显示为在该体系结构上有效的指令
  • 非指令的数据将显示为在该体系结构上无效的指令
  • 非指令的数据显示为非法指令(哦,不!)
我发现很难对其中任何一个产生兴趣,因为您确实指定了-D,它就是这样做的

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


您的示例是否给您的工作带来了一些问题(包括不便?

这完全不是一个bug,因为如果您查看的是旧二进制文件,您不希望在指令流中看到这些指令,因此它们不会出现

因此,它仍然可以正确显示正确的代码

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

  • 非指令的数据显示为在该体系结构上有效的指令
  • 非指令的数据将显示为在该体系结构上无效的指令
  • 非指令的数据显示为非法指令(哦,不!)
我发现很难对其中任何一个产生兴趣,因为您确实指定了-D,它就是这样做的

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


您的示例是否给您的工作带来了一些问题(包括不便?

对于其他一些体系结构(非ARM),我也发现了这些问题。Objdump不知道您是否正在反汇编代码或数据部分,并将尽最大努力反汇编它,包括常量和其他数据部分。

我也发现了一些其他体系结构(非ARM)的这些问题。Objdump不知道您是否正在反汇编代码或数据部分,并会尽最大努力反汇编它,包括常量和其他数据部分。

如果输入文件是ELF,我从未见过这种情况发生。如果你试图反汇编一个二进制文件,那么这是完全可能的,而且很有可能。如果输入文件是ELF,我从未见过这种情况发生。如果您试图反汇编二进制文件,那么它是完全可能的,而且最有可能的。