はじめに
Dは、C言語に似た構文を持つネイティブコードにコンパイルされる汎用システムプログラミング言語である。 静的型付け言語であり、自動(ガベージコレクション)および手動のメモリ管理をサポートしている。 Dプログラムは、個別にコンパイルし、外部ライブラリとリンクして ネイティブライブラリや実行ファイルを作成できるモジュールとして構成されている。
本ドキュメントは、プログラミング言語 D のリファレンスマニュアルである。 詳細および その他のドキュメントについては、「D言語ウェブサイト」を参照のこと。
コンパイルのフェーズ
コンパイルのプロセスは複数のフェーズに分割される。各フェーズは その後のフェーズとは独立している。例えば、スキャナは セマンティックアナライザの影響を受けない。このパスの分離により、 構文指向エディターのような言語ツールを比較的簡単に作成できる。
- ソース文字セット
ソースファイルがチェックされ、エンコーディングが決定される。 適切なスキャナがロードされる。7ビットASCIIとUTF エンコーディングが受け入れられる。 - スクリプト行
最初の行が「#!」で始まっている場合、その行は 無視される。 - 語彙解析
ソースファイルは一連のトークンに分割される。 特別なトークンは 他のトークンに置き換えられる。 SpecialTokenSequencesは 処理され、削除される。 - 構文解析
トークンのシーケンスが構文解析され、構文木が形成される。 - 意味解析
構文ツリーを走査して、変数の宣言、シンボルテーブルの読み込み、"型"の割り当て、 プログラムの意味の決定などを行う。 - 最適化
最適化は、オプションのパスであり、 意味的に等価でよりパフォーマンスの高いバージョンにプログラムを書き換えることを試みる。 - コード生成
ターゲットアーキテクチャから命令が選択され、 プログラムのセマンティクスが実装される。典型的な結果は、 リンカーへの入力に適したオブジェクトファイルとなる。
メモリモデル
バイトは、ストレージの基本単位である。各バイトは8ビットで構成され、 固有のアドレスに格納される。メモリロケーションは、スカラー型を格納するために必要な正確なサイズの1バイトまたは複数バイトの連続である。 複数のスレッドが、互いに干渉することなく、個別のメモリロケーションにアクセスできる。
メモリロケーションは3つのグループに分けられる。
- スレッドローカルメモリロケーションは、一度に1つのスレッドからのみアクセス可能である。
- 不変のメモリロケーションは、その寿命期間中は書き込みができない。 不変のメモリロケーションは、"synchronized"指定なしで複数のスレッドから読み取りが可能である。
- 共有メモリロケーションは、複数のスレッドからアクセス可能である。
スレッドローカルおよび不変のメモリロケーションにおける単一スレッドの実行は、 逐次一貫性がある。これは、一連の操作の結果は、 プログラムに表示されている順序で実行した場合と同じであることを意味する。
メモリロケーションは、参照が1つだけの場合、スレッドローカルから不変または共有に転送される 可能性がある。
メモリロケーションは、参照が1つだけの場合、共有から不変またはスレッドローカルに転送できる。
メモリロケーションは、一時的に共有からローカルに転送される場合がある。 同期が使用され、操作中に他のスレッドがメモリロケーションにアクセスできないように 防止されている場合である。
オブジェクトモデル
オブジェクトは、以下の状況で作成される。
- 定義
- NewExpression
- 一時的なものが作成される
- 共用体のどのフィールドがアクティブであるかを変更する
オブジェクトは、連続している場合も連続していない場合もある一連のメモリ領域にまたがる。 その寿命は、構築、破壊、およびその間の期間を含む。 オブジェクトには静的に、または実行時の型情報によって決定される型がある。 オブジェクトのメモリ領域は、スレッドローカル、不変、または共有の任意の組み合わせを含むことができる。
オブジェクトは複合オブジェクトに構成される。複合オブジェクトを構成するオブジェクトは、 サブオブジェクトである。他のオブジェクトのサブオブジェクトではないオブジェクトは、 完全オブジェクトである。サブオブジェクトの寿命は、 常にそれが属する完全オブジェクトの寿命の範囲内である。
オブジェクトのアドレスは、そのオブジェクトの最初のメモリ位置の最初のバイトのアドレスである。 オブジェクトのアドレスは、オブジェクトがネストされていない限り、それぞれ異なる。
算術
整数演算
整数演算は、 2の補数法を使用して 実行される。 整数オーバーフローはチェックされない。
浮動小数点演算
浮動小数点演算は、 IEEE-754浮動小数点演算を使用して実行される。
DEEPL APIにより翻訳、ところどころ修正。
このページの最新版(英語)
このページの原文(英語)
翻訳時のdmdのバージョン: 2.109.1
ドキュメントのdmdのバージョン: 2.109.1
翻訳日付 :
HTML生成日時:
編集者: dokutoku