Cdeclとは? わかりやすく解説

呼出規約

(Cdecl から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/11/24 14:20 UTC 版)

呼出規約(よびだしきやく)ないし呼出慣例(よびだしかんれい)(: calling convention)は、コンピュータ命令セットアーキテクチャごとに取り決められるABIの一部で、サブルーチンが呼出される際に従わねばならない制限などの標準である。名前修飾について、データを渡す「実引数」、戻るべきアドレスである「リターンアドレス」、データを戻す「返戻値」などを、スタックなどに対してどのように格納するのか、また各レジスタを、呼び出し側とサブルーチンのどちらの側が保存するか、等といった取決めの集まりである。言語が同じでも、分割コンパイルされリンカでリンクされる相互のプロシージャ間では、呼出し呼出されるならば同一の呼出規約に従っていなければならない。一方で、違う言語の間でも、同一の呼出規約を経由して相互にプロシージャを呼出すこともできる。


  1. ^ ボーランド __fastcall 呼出規約では、残りの引数は Pascal 呼出規約 と同様にからの順にスタックに積まれる。変数修飾子 - RAD Studio XE2”. Delphi® XE2 および C++Builder® XE2 オンライン ヘルプ. Embarcadero Technologies, Inc. (2012年4月30日). 2013年1月22日閲覧。


「呼出規約」の続きの解説一覧

cdecl

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/12/25 15:34 UTC 版)

呼出規約」の記事における「cdecl」の解説

インテルx86ベースシステム上のC/C++では cdecl 呼出規約使われることが多い。cdeclでは関数への引数右から左の順でスタック積まれる関数戻り値EAXx86レジスタ一つ)に格納される呼び出された側の関数ではEAX, ECX, EDXレジスタの元の値を保存することなく使用してよい。呼び出し側の関数では必要ならば呼び出す前にそれらのレジスタスタック上などに保存するスタックポインタの処理は呼び出し側で行う。 例えば、以下のCプログラム関数呼び出しは、 int function(int, int, int);int a, b, c, x;...x = function(a, b, c); 以下のような機械語生成するMASMにおけるx86アセンブリ言語記述する)。 push cpush bpush acall functionadd esp, 12 ;スタック上の引数除去mov x, eax Cソースコードにてa, b, cの順で記述され引数は、逆の順序c, b, aでスタック積まれcall命令リターンアドレススタック積んだ上でサブルーチンジャンプする戻った後に呼び出し側がスタック上の引数データ除去する。 cdecl は通常 x86 Cコンパイラデフォルトであるが、他のコンパイラも(Delphiを含むPascalコンパイラ等)、cdecl に呼出規約変更するオプション持っている手動操作するには、例えば、 void _cdecl function(params); とする。_cdeclはプロトタイプ宣言部ないし関数宣言部に書く必要がある。 OS/2上の Virtual Pascal での例を挙げると、 function MyWndProc(h : HWND; m : ULONG; mp1 : MPARAM; mp2 : MPARAM) : MRESULT; CDECL; のようにCDECL指令付ける。このコンパイラ通常下記Pascal 呼出規約用いるが、この関数はOS/2のウィンドウシステム (Presentation Manager) から呼ばれるため、システム側に合わせてcdecl呼出規約変更する必要がある

※この「cdecl」の解説は、「呼出規約」の解説の一部です。
「cdecl」を含む「呼出規約」の記事については、「呼出規約」の概要を参照ください。

ウィキペディア小見出し辞書の「Cdecl」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Cdecl」の関連用語

Cdeclのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Cdeclのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアの呼出規約 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaの呼出規約 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2024 GRAS Group, Inc.RSS