针对ARM的高效C++

Efficient C++ for ARM

本文关键字:C++ 高效 ARM 针对      更新时间:2023-10-16

我将在ARM上进行有关C++的内部培训,重点是编程技巧和提示,我搜索了一些网页,如:

  • 嵌入式系统工程师的嵌入式C面试问题
  • ARM的高效C

以上所有内容主要针对ARM上的C,因为我想知道它们也适用于C++,比如结构填充等

你能帮我吗,T.H.X

我没有看第一个链接,第二个链接Efficient C for ARM非常好,感谢您的发现和分享,我将推荐人们参考该链接。

正如Zen of Assembly语言在今天仍然像它问世时一样重要,这并不是因为现代x86与8088/86和"吃循环的人"有关,而是因为所教授的思维过程和分析不会随着时间的推移而改变。循环进食者可能会从一种语言到另一种语言或从一个目标到另一个目标,但你如何找到他们却不是。那本书已经过时了,当它问世时,我在某个地方读到了8088/86左右的版本,但我当时读了它,从那以后每天都在用我学到的东西。

同样,Efficient C for ARM也适用于C++中的类似项目,但更重要的是,在显示任何特定结构或代码之前,请先看早期的幻灯片。您必须通过检查和使用探查器进行分析(与Zen of Assembly语言所说的没有什么不同,查看并计时)。然后,Efficient C for ARM页面继续检查一些示例,获取C++代码并进行编译,然后进行反汇编,看看实际发生了什么。这样做的问题是,你必须意识到编译器上有很多调整旋钮,编译器在不断发展,不同的编译器,比如gcc、llvm(clang)和visual C/C++,是完全不同的。相同的C++源代码呈现给不同的编译器、不同版本的编译器以及具有不同优化设置的相同编译器将产生不同的结果。

当你想进行微优化时,你必须通过在反汇编和分析编译器对你的代码所做的事情(对于你关心的每个目标)方面获得大量的经验来了解编译器是如何工作的。只有这样,您才能开始进行一些真正的优化,而不必求助于编写汇编程序。尽管人们可能会告诉你你可以做到这一点,但在某些情况下,你可以通过简单地重新排列结构、函数、代码行等来显著提高执行性能。此外,还可以使代码更易于移植到其他处理器,并使代码在多个平台上(而不仅仅是一个平台)上通常更快。反对者是对的,因为你需要有一个很好的理由,有时它不会改变可读性,但往往会让你的代码变得不可读、不可维护或脆弱,等等。总是以合理的方式安排你的结构,首先是更大、对齐的变量,然后逐渐变小。其他的事情,尽管你可能不想做一个习惯,但只有在特殊的场合。