【发布时间】:2013-02-24 10:08:19
【问题描述】:
编译 C/C++ 代码时,它会生成汇编代码。 如果我有 Windows 和 Linux 双启动(即完全相同的处理器)并且我在 Windows 和 Linux 上都用 C++ 编写了一个程序,那么
编译后(链接前)的汇编代码是否相同?
我的意思是可执行文件之间的区别是链接器,写吗? 但我不是在谈论可执行文件......我在谈论链接之前的汇编代码。
如果两个汇编代码不同,那么它们为什么以及如何不同?
库是预编译的,所以我认为这可能是不同的(如果不是,请纠正我)。 但是如果我不使用库怎么办?
【问题讨论】:
-
系统调用也会有所不同。如果它是一个不做任何 IO 的普通应用程序,您可能可以在两种架构上运行相同的二进制文件,但一旦超出普通情况,它就会失败。
标签: assembly compiler-construction linker cpu-architecture