繁体   English   中英

C ++体系结构:它与机器体系结构有何相似之处

[英]C++ architecture : how is it similar to machine architecture

因此,到目前为止,我所编写的全部都是C ++,并且我经常看到人们提到C ++之所以快是因为它与机器代码非常相似。 我想知道机器/ C ++代码架构到底是什么,为什么相似使得它更快,以及它与C#等其他架构的比较。

我了解RAII,堆,堆栈和语法,但有关此事。 我什至对计算机不是由CPU,RAM和硬盘驱动器组成的东西都不了解。 我计划很快就开始学习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用一点汇编编写)。C#的.Net框架就像Java的JRE。 在某些面向性能的业务中,这种性能差异可能起着很大的作用,但是对于大多数应用程序来说,这几乎是不可见的。 希望能解释!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM