delphi 64位汇编中的.noframe是什么?
我见过像这样的x64汇编代码。
procedure test;
{$IFDEF CPUX64}
asm
.noframe
..
..
.noframe是什么意思?我为什么要关心?
答案 0 :(得分:2)
答案 1 :(得分:1)
来自http://blogs.embarcadero.com/abauer/2011/10/10/38940
.NOFRAME
某些功能永远不会调用其他功能。这些被称为“叶子”函数,因为它不会对其他函数进行任何进一步的“分支”,所以像树一样,它们代表“叶子”对于诸如此类的函数,具有完整的堆栈帧可能是额外的开销你想要消除。虽然编译器确实试图消除堆栈帧,但有时候它根本无法自动解决这个问题。如果您确定不需要帧,则可以使用此指令作为编译器的提示。
答案 2 :(得分:0)
据我所知,正确的答案并不意味着“叶功能”状态。 确定可以使用.noframe
如果“叶子函数”语句为true,则意味着您根本不会在此类函数中使用堆栈。