thiscall
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/12/25 15:34 UTC 版)
この規約はC++のメンバ関数を呼ぶのに用いられる。二つの主たる版があり、コンパイラ及び、関数が可変長の引数リストを用いるかによっていずれかが用いられる。 GCC (GNUコンパイラコレクション)では、thiscall はほとんど cdecl と同様である。呼び出し側がスタックを清掃し、引数は右から左の順で渡される。相違点は全ての引数を渡した後、最後に this ポインタがスタックに積まれることである。これは Windows で可変引数を用いるときの thiscall と類似している。 Windowsの場合は、関数が可変引数を取らない場合、引数は右から左に渡され、thisポインタはECXレジスタに格納される。スタックを清掃するのは呼ばれた側である。 thiscallがキーワードではないため、thiscallを明示的に指定することはできないが、IDAのような逆アセンブラではそれを指定する必要がある。そのため、__thiscall__というキーワードが用意されている。
※この「thiscall」の解説は、「呼出規約」の解説の一部です。
「thiscall」を含む「呼出規約」の記事については、「呼出規約」の概要を参照ください。
- thiscallのページへのリンク