2

FPC のディレクティブnostackframeと Delphi の.NOFRAMEディレクティブは、64 ビットの asm 関数でまったく同じですか?

つまり、次のコード テンプレートは

procedure Naked(SomeArg: Integer);{$IFDEF FPC}nostackframe;{$ENDIF}
asm
{$IFNDEF FPC}
        .NOFRAME
{$ENDIF}
  ..
end;

Delphi と FPC で同一の裸の 64 ビット asm 関数を生成しますか?

4

1 に答える 1

2

私の知る限り、.NOFRAME(Delphi) とnostackframe(FPC) はどちらも同じことを行います。つまり、スタック フレームの生成を防ぎます。ただし、これらが有効になる条件は、2 つのコンパイラで同じではない可能性があることに注意してください。

ソースコードの互換性の{$ASMMODE INTEL}ために、FPC にも使用してください。

ほとんどの場合、FPC64 と DCC64 asm は同じ構文を使用しますが、まれに、インライン アセンブラが理解する構文にいくつかの違いがあります。また、Windows x64 以外のプラットフォームでは、異なる呼び出し規則が使用されることに注意してください。

于 2014-10-21T19:21:01.163 に答える