ツールチェーンコンポーネント
別々の低レベルツールチェーンであるWhaleの役割とWaveエコシステムのコンポーネント境界を説明します。
Wave Foundation
Whaleイラン
Whaleは、アセンブリと中間表現を扱う低レベルツールチェーンです。アセンブリ、オブジェクト、リンク、および中間表現をカバーするコンポーネントは、Waveとは異なるネイティブコード生成ツールで再利用できるように設計されています。
Whaleは、Wave開発環境全体を呼ぶ名前ではありません。各プロジェクトの責任は次のように区別されます。
| プロジェクト | 責任 |
|---|---|
wavec |
Wave ソースを調べて実行ファイルを作成します。 |
| Vex | Waveパッケージ、manifest、依存グラフ、lockfileとパッケージビルドを管理します。 |
| Whale | 独立したassembler、object、linkerとIRコンポーネントを提供します。 |
Wave std |
ランタイムとシステムAPIをWaveソースモジュールとして提供します。 |
コンポーネント
Whale workspaceは、4つの主要なライブラリ領域で構成されています。
assembler:トークン化、AMD64解析・エンコーディング、section、symbolとrelocationobject:オブジェクトファイルモデルとELF64writerlinker:リンク層ir: Whale IRタイプ、builder、出力、検証とオプション frontend socket
whale実行可能ファイルは、この領域をasm、object、link、irコマンドとして提供します。
ツール境界
Waveプログラムはwavecでビルドします。アセンブリ、オブジェクトファイル、IRを直接扱う場合は、whaleコマンドを使用します。
Whaleを設置してもwavecのビルド方式は変わりません。 Vexはwavecを使ってWaveパッケージをビルドし、Whaleは低レベルの出力を扱う作業で直接実行します。
成果物の検証
Whale出力をビルドプロセスにリンクするときは、objectformatとターゲットarchitectureが一致することを確認してください。 symbolとrelocationは、readelf、objdumpなどの独立したツールで検査できます。 IR socketを使用するビルドでは、生産者とWhaleが同じsocketschemaを使用する必要があります。