英語版
このページの英語版を見る

dmd.target

ターゲット固有のパラメータを扱う
クロス・コンパイルを可能にするために、コンパイラがバイナリを生成するとき を生成する場合、ターゲット情報を抽象化する必要がある。 を抽象化する必要がある。これは、主にTarget を通して、このモジュールで行われている。

注釈: DMD自体はクロスコンパイルをサポートしていないが、GDCとLDCはサポートしている。 そのため、このモジュールは(時には大きく)修正されている、 貢献者は、その変更がどのように影響するかを確認する必要がある。

Authors:

ソース target.d

void addDefaultVersionIdentifiers(const ref Param params, const ref Target tgt);
dmdにデフォルトのversion 識別子を追加し、ターゲットプラットフォームを ターゲットプラットフォームを params. https://dlang.org/spec/version.html#predefined-versions
最終的なフラグ(コマンドライン、DFLAGS環境変数、設定ファイルなど)を追加するために、すべての引数の解析(コマンドライン、DFLAGS環境変数、設定ファイルなど)の後に実行する必要がある。 X86_64 変数と設定ファイル)の後に実行する必要がある。 CRuntime のような)。
Parameters:
Param params どのターゲットでコンパイルするか(setTarget() によって設定される)
Target tgt ターゲット
struct Target;
バックエンドターゲットを記述する。現時点では不完全だが、将来的には を含むようになるはずである。 情報を含むようになるはずである。
多くの場合、sizeof()の呼び出しは、データ型サイズを取得するために直接使用することはできない。 多くの場合、sizeof()の呼び出しは、データ型サイズの取得には直接使えない。 を使用することになるからである。
enum OS: ubyte;
Target.OSのビットデコーディング
ubyte ptrsize;
ポインタのサイズ(バイト
ubyte realsize;
実数がメモリで消費するサイズ
ubyte realpad;
CPUの実サイズにパディングを追加して実サイズに合わせる。
ubyte realalignsize;
実数のアラインメント
ubyte classinfosize;
サイズClassInfo
ulong maxStaticDataSize;
静的データの最大サイズ
TargetC c;
C ABI
TargetCPP cpp;
C++ ABI
TargetObjC objc;
Objective-C ABI
const(char)[] architectureName;
アーキテクチャ名
const(char)[] obj_ext;
オブジェクトファイルの拡張子
const(char)[] lib_ext;
静的ライブラリファイルの拡張子
const(char)[] dll_ext;
ダイナミック・ライブラリ・ファイルの拡張子
bool run_noext;
拡張子なしのソースの実行を許可する
struct FPTypeProperties(T);
浮動小数点型のすべてのプロパティを表す値
real_t max;
無限大でない最大の表現可能な値
real_t min_normal;
0でない正規化された表現可能な最小値
real_t nan;
NaN値
real_t infinity;
無限大値
real_t epsilon;
値1に対する最小の増分値
long dig;
精度の小数点以下の桁数
long mant_dig;
仮数部のビット数
long max_exp;
2が表現可能な最大のint値max_exp-1が表現可能である
long min_exp;
2が表現可能な最小int値min_exp-1が正規化値として表現可能である。
long max_10_exp;
10max_10_exp が表現可能な最大int値
long min_10_exp;
10が正規化値として表現可能な最小int値min_10_expは正規化値として表現可能である。
FPTypeProperties!float FloatProperties;
FPTypeProperties!double DoubleProperties;
FPTypeProperties!real_t RealProperties;
void _init(const ref Param params);
ターゲットを初期化する
@safe Target.ObjectFormat objectFormat();
使用するオブジェクトフォーマットを決定する
@safe void setCPU();
使用する命令セットを決定する
@safe void deinitialize();
コンパイラのグローバル状態を初期化する。
これは、_init 。 状態に戻すことができる。
uint alignsize(Type type);
指定された型のターゲット・メモリ・アラインメント・サイズを要求する。
Parameters:
Type type 検査する型
Returns:
アラインメント(バイト
uint fieldalign(Type type);
指定された型の、要求されたターゲットフィールドアライメントサイズ。
Parameters:
Type type 検査する型
Returns:
バイト単位のアライメント
Type va_listType(const ref Loc loc, Scope* sc);
ターゲットのva_list 型を表す。_argptr 宣言に必要である。

注釈: Posix/x86_64の場合、これはva_list型の引数を渡すために実際に使われる型を返す。 va_list型の引数を渡すときに実際に使われる型を返す。

Returns:
Type これは を表す。va_list
@safe int isVectorTypeSupported(int sz, Type type);
ターゲットがベクトル型をサポートしているかどうかをチェックする。
Parameters:
int sz ベクトル型のサイズ(バイト)
Type type ベクトル要素型
Returns:
0 ベクター型がサポートされている、 1 ベクタ型はターゲットでまったくサポートされていない。 2 ベクター要素型はサポートされていない。 3 ベクトルサイズがサポートされていない
bool isVectorOpSupported(Type type, EXP op, Type t2 = null);
ターゲットがベクターに対して指定された操作をサポートしているかどうかをチェックする。
Parameters:
Type type ターゲットの演算型
EXP op に対して行われる単項演算または二項演算。 type
Type t2 に対して行われる単項演算または二項演算。 opがバイナリ演算の場合
Returns:
演算がサポートされているか、型がベクトルでない場合は真
@safe LINK systemLinkage();
ターゲットのデフォルトのシステム・リンケージ。
Returns:
LINK に使用する。extern(System)
TypeTuple toArgTypes(Type t);
引数型がターゲット上の関数にどのように渡されるかを記述する。
Parameters:
Type t 型を分解する。
Returns:
型が1つ以上のレジスタで渡される場合は、型のタプル 型が常にスタック上で渡される場合は、空のタプル 型がvoid 、またはarg型がターゲットでサポートされていない場合はnullとなる。
bool isReturnOnStack(TypeFunction tf, bool needsThis);
関数のリターン・スタイルを決定する。 呼び出し元のスタックへの隠されたポインタを通してか。
Parameters:
TypeFunction tf チェックする関数型
bool needsThis 関数型が非スタティックメンバ関数の場合、trueを返す。
Returns:
関数の戻り値がスタック上にある場合、trueを返す。
bool preferPassByRef(Type t);
指定されたPOD型のin パラメータを、参照で渡すか値で渡すかを決定する。 参照渡しか値渡しかを決定する。-preview=in でのみ使用される!
Parameters:
Type t in パラメータの型は POD でなければならない。
Returns:
true in パラメータが参照渡しである場合
Expression getTargetInfo(const(char)* name, const ref Loc loc);
キーでtargetInfoを取得する
Parameters:
const(char)* name 取得するtargetInfoの名前
Loc loc エラーメッセージに使用する場所
Returns:
要求されたtargetInfoの式
@safe bool isCalleeDestroyingArgs(TypeFunction tf);
Parameters:
TypeFunction tf 呼び出される関数の型
Returns:
true 呼び出し元が引数のデストラクタを呼び出す場合。
bool libraryObjectMonitors(FuncDeclaration fd, Statement fbody);
オブジェクト・モニターの処理系が常にDランタイム・ライブラリ(rt/monitor_.d)に定義されている場合、trueを返す。 を返す。
Parameters:
FuncDeclaration fd synchronized ストレージクラスを持つ関数。
Statement fbody の関数本体全体。 fd
Returns:
false ターゲットのバックエンドがモニターの同期を扱う場合。
const @safe bool supportsLinkerDirective();
ターゲットがpragma(linkerDirective) をサポートしている場合は真を返す。
Returns:
false ターゲットが をサポートしていない場合。pragma(linkerDirective)
@safe bool isXmmSupported();
Returns:
xmmの使用がサポートされていればtrueを返す
const nothrow @nogc @property scope @safe bool isPOSIX();
Returns:
POSIX用のコードを生成する場合はtrue
@safe uint stackAlign();
Returns:
スタックのアラインメント
struct TargetC;
extern(C) ABIとのインターフェイスに特有の関数と変数。
bool crtDestructorsSupported;
すべてのプラットフォームがcrt_destructorをサポートしているわけではない
ubyte boolsize;
C_Bool 型のサイズ。
ubyte shortsize;
Cshort またはunsigned short 型のサイズ。
ubyte intsize;
Cint またはunsigned int 型のサイズ。
ubyte longsize;
Clong またはunsigned long 型のサイズ
ubyte long_longsize;
Clong long またはunsigned long long 型のサイズ
ubyte long_doublesize;
Cのサイズlong double
ubyte wchar_tsize;
Cwchar_t 型のサイズ。
Runtime runtime;
リンク先のCランタイムのベンダー
BitFieldStyle bitFieldStyle;
Cコンパイラによって異なる
struct TargetCPP;
extern(C++)ABIとのインターフェイス固有の関数と変数。
bool reverseOverloads;
(dmcやclのように)オーバーロードされた関数がグループ化され、逆順になっているかどうかを設定する。
bool exceptions;
C++例外のキャッチがサポートされているかどうかを設定する。
bool twoDtorInVtable;
C++ ABIが、削除するデストラクタと削除しないデストラクタをvtableに入れる。
bool splitVBasetable;
C++ ABIが仮想関数と仮想ベースに別々のテーブルを使用する場合に設定する。
bool wrapDtorInExternD;
C++のdtorが、ランタイムから呼び出し可能なDラッパーを必要とする場合に設定する。
Runtime runtime;
リンクするC++ランタイムのベンダーを指定する。
const(char)* toMangle(Dsymbol s);
与えられたシンボルをC++ ABI用にマングル化する。
Parameters:
Dsymbol s C++リンケージ宣言
Returns:
シンボルの文字列マングリング
const(char)* typeInfoMangle(ClassDeclaration cd);
指定されたクラス宣言の C++ ABI 用 RTTI マングリングを取得する。
Parameters:
ClassDeclaration cd C++ リンクを持つクラス
Returns:
C++型情報の文字列マングリング
const(char)* thunkMangle(FuncDeclaration fd, int offset);
与えられた "関数"へのthis-adjustingサンクのマングル名を取得する。 宣言にマングルする。
Parameters:
FuncDeclaration fd C++リンケージ付き関数
int offset vptrへの呼び出しオフセット
Returns:
C++サンクの文字列マングリング、未処理の場合はNULL
const(char)* typeMangle(Type t);
C++ ABIのベンダー固有の型マングリングを取得する。
Parameters:
Type t 検査する型
Returns:
型がターゲット上で特別にマングルされている場合は文字列。 未処理の場合はnull
Type parameterType(Type t);
与えられた引数を 関数に渡す際に実際に使用される型を取得する。 extern(C++) 、未処理の場合はnull
Parameters:
Type t 渡される型。
Returns:
Type 型に使用する。 t.
bool fundamentalType(const Type t, ref bool isFundamental);
typeがベンダー固有の基本型かどうかをチェックする。
Parameters:
Type t 検査する型
bool isFundamental 結果を格納する場所
Returns:
isFundamentalが"関数"によって設定された場合、trueを返す。
uint derivedClassOffset(ClassDeclaration baseClass);
与えられた基底クラスから派生したextern(C++) クラスのフィールドの開始オフセット位置を取得する。 のフィールドの開始オフセット位置を取得する。
Parameters:
ClassDeclaration baseClass C++ リンクを持つ基底クラス
Returns:
派生クラスのフィールドを配置するための開始オフセット
struct TargetObjC;
extern(Objective-C)ABIとのインターフェイスに固有の関数と変数。
bool supported;
コンパイラがObjective-Cとのインターフェイスが可能かどうかを設定する。
Target target;