c++体系结构:它与机器体系结构有什么相似之处?

本文关键字:体系结构 相似 什么 机器 c++ | 更新日期: 2023-09-27 18:12:38

所以到目前为止我用的都是c++编程,我经常看到人们提到c++快的原因是因为它与机器码非常相似。我想知道机器/c++代码架构到底是什么,为什么相似会使它更快,以及它与其他架构(如c#)相比如何。

我理解RAII,堆,堆栈和语法,但这是关于它。除了CPU、RAM和硬盘之外,我对计算机是由什么组成的都不太了解。我打算很快开始学习c#,以便很快开发WP7应用程序,所以我认为对底层发生的事情有更深入的了解将有助于我识别语言之间的异同。

关于这个主题的图表或文章的指针将是伟大的!

c++体系结构:它与机器体系结构有什么相似之处?

使c++, c++的东西,是而不是真正类似于任何机器架构。C子集也很相似。变量赋值、函数调用、循环、数组遍历和比较都倾向于映射到一小组快速的核心指令。在现代处理器上,对原语或数组元素的赋值通常是一条指令:例如,一条指令将值从内存移到寄存器,反之亦然。用C编程很长时间的人可以从字面上看到编译器将生成的机器码。关键是"所见即所得"——语言指令直接翻译成机器代码,或多或少是一对一的。

另一方面,像c#(或Java、Ruby、Python、Perl、Haskell、Scheme等)这样的"高级"语言有或多或少实质性的底层运行时支持系统。对于某些语言,这意味着赋值可能需要先在表中查找一些东西;对于其他人来说,这可能意味着赋值有时是简单的复制,有时是复杂的数据操作,这取决于它是什么类型的数据。很难预测你的语句将如何被翻译成机器代码。

c++处于一个有趣的中间地带:一些赋值就像C的赋值;其他的实际上是对operator=()的重载调用,你永远不确定你会得到什么(当然,没有仔细研究)。c++确实有运行时系统;它只是比Ruby、Haskell或Scheme的轻量级得多。

这不是关于在任何方面"相似"。这是为了贴近硬件。C和c++都不会向您隐藏内存管理的任何细节。因为您必须考虑诸如对齐、连续访问和堆栈之类的低级事情,所以您可以编写更高效的代码。高级语言对您隐藏了这些东西,这使得编程体验更好,但通常情况下,代码并没有得到应有的优化。

编程语言的发展表明,编程越方便,需要为此付出的性能代价就越大。对于大多数编程初学者来说,Java肯定比c或c++更友好。(内存管理,头文件,容器等)。C或c++比Java快,因为它们被编译成机器代码,可以直接加载和运行。但是对于java,您可能知道JRE,它是java代码的运行时框架,因为java代码被编译成只有java虚拟机才能理解的代码(它是用c编写的,带有一点汇编)。. net框架之于c#就像JRE之于Java。在某些以性能为导向的业务中,这种性能差异可能是一个大问题,但对于大多数应用程序来说,这几乎是不可见的。希望这能解释清楚!