C / C ++如何知道如何编译正确的架构?

时间:2013-01-27 04:26:43

标签: c++ assembly architecture

好吧,我开始从事像c ++和c这样的计算机编程。我对处理器结构有一个强烈的疑问,这使我能够更好地理解我的代码运行的位置。

所以,假设我编译了一个c ++程序。此时,它编译为汇编低级代码。此代码具有执行我的代码的处理器指令。由于每个处理器都有不同的指令集,我想知道我的代码将在何处运行。 就像,我在代码块编译我的程序。我怎么知道我是在为32位还是64位计算机编译它?我可以改变吗?两个32位处理器有什么区别,一个是i5,另一个是奔腾4? (我的代码会在两个处理器中运行吗?)

谢谢:)

1 个答案:

答案 0 :(得分:5)

  

我如何知道我是否正在为32位或64位计算机编译它?

您必须在构建程序时告诉编译器。它可能有一些默认值 - 检查其文档。

  

我可以更改吗?

也许,这取决于你的编译器。如果它有必要的选项,那么是的。例如,clang有一个-arch标记。

  

两个32位处理器有什么区别,一个是i5,另一个是奔腾4?

如果两者都实现相同的指令集,那么它们实际上与编译软件的目的相同。但是,特定于机器的优化可能会在一个或另一个上更好地工作。

  

我的代码会在两个处理器中运行吗?

在你给出的例子的情况下,可能是的。