0

在处理器堆栈上 push mov 和 pop 等是单条指令。

编译源代码时,编译器生成单机指令版本,但在运行时,假设堆栈是......以及常规堆栈容器,在运行时访问存储在堆栈上的值需要函数调用,这会转化为大量机器码。

是否可以为动态运行时对象实现相同级别的效率,而不是使用比单个机器指令长得多的 setter 和 getter 成员函数?

我的想法是使用标记指针,但我不知道如何在运行时将其值直接推入内存位置或从内存位置推入而不诉诸函数调用。

内联汇编可能是一种选择,如果可能的话,我想避免这种选择。但我想我仍然必须将它放在函数体中,这样它就不会是一条指令。

4

1 回答 1

1

听起来你想要做的是选择额外的callret你的 getter/setter。在这种情况下,您可以使用关键字inline告诉编译器内联该特定函数。如果它们不太复杂,另一种方法是使用 C 宏函数对 getter/setter 进行编码。

于 2012-01-19T23:40:50.923 回答