【发布时间】:2018-08-24 03:02:40
【问题描述】:
我目前正在阅读《Programming: Principles and Practice using C++》,作者提到在类定义中编写成员函数的定义可以使函数内联。我不完全确定这意味着什么,所以我查看了https://www.geeksforgeeks.org/inline-functions-cpp/ 以获得更具体的理解。在这句话的上下文中,我似乎无法理解“指令”的含义:
当程序执行函数调用指令时,CPU会存储函数调用之后指令的内存地址。
我用谷歌搜索,看起来调用指令只是将控制权传递给程序的另一部分或另一个应用程序。如果是这个意思,是不是应该说“CPU存储函数调用的调用指令的内存地址”?
这个问题可能听起来很奇怪或挑剔,但我是 CS 新手,真的很想深入了解 CS。
【问题讨论】:
-
小心:“内联”的 C++ 定义(当函数定义在类定义中时确实会发生)和“内联函数”的编译器优化(该文章讨论)几乎无关的事情。这篇文章在某种程度上谈到了差异,但在我看来并没有很好地解释它。
-
除了下面的“x86 调用指令”之外,另一个可以跟进的很好的搜索词是关键词“程序计数器”和“调用堆栈”。我建议的搜索短语普遍适用于所有类型的程序集,而不仅仅是 x86。
-
他们在谈论 x86
call指令。见Intel's instruction-set reference manual entry for it。 -
@aschepler 哦,我不知道内联有两种不同的定义,这可以解释为什么它有点难以理解。我目前只想知道“内联”的 C++ 定义到底是什么。我会尝试搜索。
-
@Peter Cordes,我会查看该链接。由于我还是 CS 新手,所以我部分地想破译 x86 调用指令超出我目前的水平。但我发现我太好奇了,不能忽视并继续前进。