を呼び出す: - のために([12] [13]は、WindowsとプリブートUEFIに続いている呼び出し規約マイクロソフトのx64Windowsの64ビットIは、窓関数を呼び出すに見つけることができますDOCO、以下が適用による条約
x86-64ではロングモード)。最初の4つの整数またはポインタ引数(その順番)にレジスタRCX、RDX、R8、R9を使用し、追加の引数がスタック(右から左)にプッシュされます。 64ビット以下の場合、整数戻り値(x86に似ています)がRAXに返されます。
Microsoft x64呼び出し規約では、(実際に使用されたパラメータの数に関係なく)関数を呼び出す前にスタックに32バイトの "シャドウスペース"を割り当てるのは呼び出し元の責任です。コール。シャドースペースは、RCX、RDX、R8、R9 [14]をスピルするために使用されますが、4つよりも少ないパラメータを持つものであっても、すべての機能で使用可能にする必要があります。
レジスタRAX、RCX、RDX、R8、R9、R10、R11は揮発性(発呼者保存)とみなされます。
レジスタRBX、RBP、RDI、RSI、RSP、R12、R13、R14、およびR15は不揮発性(呼び出し先保存)とみなされます。
私は、特定の状況下で "GetEnvironmentVariableA"の呼び出しが失敗するまで、うれしくkernel32を呼び出しています。私は最終的に、それが直接の旗がセットされ、それをクリアする必要があるという事実にそれを戻した。
私の質問です。私はこれまで何の言及も見つけられず、電話の前にいつもそれをクリアするのが賢明かどうか疑問に思った。あるいはそれは他の問題を引き起こすでしょう。この例では呼び出しの慣習を知って誰もが
81分前