-2

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

在使用 cmp 命令在 X86 机器中进行比较时,板特定的二进制文件会产生正确的输出。

X-86机器:

假设我有 2 个文件 a.bin、b.bin(使用 cmp 进行比较时应该相同)

cmp a.bin b.bin

及其正确的。

手臂皮质 A9:

a.bin,b.bin

cmp a.bin b.bin

这里也必须相同。

但它会产生不匹配。


请提供任何线索!

4

1 回答 1

0

你的问题不是很清楚而且有点模糊,所以我会在黑暗中试一试,假设你在问为什么相同的源代码编译成不同的文件。

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

例如,不同的优化级别会生成不同的文件。编译器可能会将构建日期嵌入到文件中。不同的编译器会以不同的方式排列代码。

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

于 2013-05-31T11:48:51.377 回答