2013-05-31 175 views
-2

我在x86处理器中使用cmp命令,并且工作正常(使用gcc生成二进制文件) 但在arm cortex a9中使用它时,它没有给出正确的输出(使用交叉生成二进制文件gcc)CMP命令无法正常工作

板特定的二进制文件,而在X86机器使用cmp命令进行比较,产生适当的输出。

X-86机:

说我有2个文件a.bin,b.bin

cmp a.bin b.bin 

和其应有的(同时使用CMP比较应该是一样的)。

的ARM Cortex A9:

a.bin,b.bin

cmp a.bin b.bin 

在这里也必须是相同的。

但它会产生不匹配。


请任何线索!

+0

'gcc'的版本是否相同。在两者上运行'gcc -v'并发布输出。另外,你是否一致地称呼他们?另请参阅:[二进制更改每个生成](http://stackoverflow.com/questions/4140329/binary-object-file-changing-in-each-build)。 –

+0

这是一个EXE VS精灵的事情? elf和其他格式,有时gcc和其他编译器会从编译时间中提取一个时间戳,如果字节比较文件,这很容易看出来。有些格式可能不是。如果他们被认为是没有像elf/coff/exe这样的包装文件的原始二进制文件,那么看到tangrs的答案,没有理由期望两个二进制文件即使与共享相同父级名称的两个工具(gcc,msvc等)匹配。 –

+0

请显示/列出差异。 –

回答

0

你的问题不是很清楚,有点模糊,所以我会在黑暗中进行刺探,并假设你问为什么相同的源代码编译为不同的文件。

尽管编译的程序(假设没有UB或可移植性问题)在功能上是相同的,不管使用什么编译器,二进制级别上的程序不一定会是。

不同的优化级别会生成不同的文件。编译器可以将生成日期嵌入到文件中。不同的编译器会以不同的方式安排代码。

这些都是为什么您可能会为“同一个”程序获得不同输出的所有原因。