翻訳と辞書
Words near each other
・ CDC 7600
・ CDC 8600
・ CDC STAR-100
・ CDCl3
・ CDD
・ CDDA
・ CDDB
・ CDDL
・ CDDP
・ CDE
・ Cdecl
・ CDF
・ CDF Player
・ CDG
・ CDH
・ CDI
・ CDI Course Deviation Indicator
・ CDian
・ CDisplay RAR Archived Comic Book File
・ CDJ


Dictionary Lists
翻訳と辞書 辞書検索 [ 開発暫定版 ]
スポンサード リンク

Cdecl ( リダイレクト:呼出規約 ) : ウィキペディア日本語版
呼出規約[よびだしきやく]
プログラミングにおける呼出規約(よびだしきやく)ないし呼出慣例(よびだしかんれい)はサブルーチンを呼び出す際の標準的な手法を指す。サブルーチンにデータを渡し、戻るべきアドレス(リターンアドレス)を記録し、サブルーチンからデータを受け取るための規則である。一つのプログラムでは、(複数の言語処理系を用いて記述する場合も)同一の呼出規約を守る必要がある。
さまざまな呼出規約があり、引数のコールスタック(以下単にスタックと呼ぶ)への格納法、サブルーチンにデータを渡す方法、サブルーチンからの復帰法、名前修飾が異なる。
== cdecl ==
インテルx86ベースのシステム上のCC++では cdecl 呼出規約が使われることが多い。cdeclでは関数への引数は右から左の順でスタックに積まれる。関数の戻り値は EAX(x86のレジスタの一つ)に格納される。呼び出された側の関数ではEAX, ECX, EDXのレジスタの元の値を保存することなく使用してよい。呼び出し側の関数では必要ならば呼び出す前にそれらのレジスタをスタック上などに保存する。スタックポインタの処理は呼び出し側で行う。
例えば、以下のCプログラムの関数呼び出しは、

int function(int, int, int);
int a, b, c, x;
...
x = function(a, b, c);

以下のような機械語を生成する(MASMにおけるx86アセンブリ言語で記述する)

push c
push b
push a
call function
add esp, 12 ;スタック上の引数を除去
mov x, eax

a, b, cの順で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呼出規約に変更する必要がある。

抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)
ウィキペディアで「呼出規約」の詳細全文を読む

英語版ウィキペディアに対照対訳語「 Calling convention 」があります。




スポンサード リンク
翻訳と辞書 : 翻訳のためのインターネットリソース

Copyright(C) kotoba.ne.jp 1997-2016. All Rights Reserved.