为什么我的.exe文件在另一个处理器上工作 我在C++中编译了我的程序,然后我把这个程序的exe发送给我的朋友,他有AMD处理器,但我有英特尔。为什么我的.exe文件可以在他的计算机上运行,而编译的程序可以在具体的硬件和操作系统上运行 如何编写代码以满足硬件独立性的要求 我在哪里可以读到它

为什么我的.exe文件在另一个处理器上工作 我在C++中编译了我的程序,然后我把这个程序的exe发送给我的朋友,他有AMD处理器,但我有英特尔。为什么我的.exe文件可以在他的计算机上运行,而编译的程序可以在具体的硬件和操作系统上运行 如何编写代码以满足硬件独立性的要求 我在哪里可以读到它,c++,cross-platform,C++,Cross Platform,基本上,您编译了x86或x86_64指令集处理器的代码 因此,它在Intel和AMD处理器上都能工作,因为它们都是x86或x86_64指令集处理器 当您为另一个指令集(如ARM)编译时,它可能会开始不起作用。AMD和Intel都使用x86或x86_64体系结构。为了能够为Intel CPU运行在Windows(或其他操作系统)上编译的程序,AMD CPU支持相同的机器命令集。在这种情况下,对于x64,事实上,英特尔是遵循AMD方法的公司我猜你的2。是关于可执行文件而不是代码。标准C++是可移植的

基本上,您编译了x86或x86_64指令集处理器的代码

因此,它在Intel和AMD处理器上都能工作,因为它们都是x86或x86_64指令集处理器


当您为另一个指令集(如ARM)编译时,它可能会开始不起作用。

AMD和Intel都使用x86或x86_64体系结构。为了能够为Intel CPU运行在Windows(或其他操作系统)上编译的程序,AMD CPU支持相同的机器命令集。在这种情况下,对于x64,事实上,英特尔是遵循AMD方法的公司我猜你的2。是关于可执行文件而不是代码。标准C++是可移植的(在某种意义上,你可以编译不同的体系结构相同的代码),限制是关于处理器家族,但是命令集,幸运的是,对于桌面PC(X86/E64)是标准化的。因此,我们不必陷入微控制器领域的混乱。也就是说,从技术上讲,您仍然可以根据桌面CPU进行不同的优化。英特尔和AMD都提供自己的编译器,在某些情况下,它们在CPU上的性能会更好(但它当然会为其他机器添加回退代码)。更倾向于建议说“指令集”,而不是体系结构,因为体系结构可以指CPU的内部设计结构。也许,值得一提的是,C++程序是为特定平台编译的。这包括为特定CPU指令集生成代码,但操作系统也起到了作用。撇开OS LIB不谈(不必使用),可执行文件的二进制格式可能因操作系统而异。因此,(不久前)x86的Linux可执行文件没有在Windows PC上运行(在发明之前),因为Windows根本无法加载它。