ツールチェーンコンポーネント

別々の低レベルツールチェーンである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とrelocation
  • object:オブジェクトファイルモデルとELF64writer
  • linker:リンク層
  • 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を使用する必要があります。