2015-11-07 43 views
-2

什么是delphi 64位程序集中的.noframe?什么是delphi 64位程序集中的.noframe?

我看过这样的x64汇编代码。

procedure test; 
{$IFDEF CPUX64} 
asm 
    .noframe 
.. 
.. 

.noframe是什么意思,为什么要关心?

+0

这是这个问题的任何帮助吗?评论讨论'.noframe'并提供进一步的链接。在搜索时立即找到。 http://stackoverflow.com/questions/10695264/delphi-asm-code-incompatible-with-64bit –

回答

1

http://blogs.embarcadero.com/abauer/2011/10/10/38940

.NOFRAME

有些功能从来不给其他函数的调用。这些被称为“叶”函数,因为不会进一步“分支”到其他函数,所以就像树一样,它们代表“叶”对于像这样的函数,拥有完整的堆栈帧可能会增加额外的开销想要消除。尽管编译器确实尝试并消除了堆栈帧,但有时候它根本无法自动计算出来。如果你确定一个框架是不必要的,你可以使用这个指令作为编译器的提示。

1

documentation

只要有声明没有局部变量和参数计数< = 4.使用为叶函数强制禁用一个堆栈帧的产生。

叶函数是一个不调用另一个函数的函数。这总是在调用树的底部。

相关问题