Whale ツールチェーン
Wave から独立した低レベルのアセンブラ、オブジェクト、リンカー、IR ツールチェーンである Whale の役割と境界を説明します。
Wave Foundation
Whale とは
Whale は Rust で書かれた独立した低レベルツールチェーンです。Wave やその他のネイティブコード生成系で再利用できる、アセンブリ、オブジェクト、リンク、中間表現のコンポーネントを提供します。
Whale は Wave の開発環境全体を指す名称ではありません。各プロジェクトには異なる責務があります。
| プロジェクト | 責務 |
|---|---|
wavec |
Wave ソースの検証とコンパイル、アーティファクト生成、ネイティブリンクの調整 |
| Vex | Wave パッケージ、マニフェスト、依存グラフ、ロックファイル、パッケージビルドの管理 |
| Whale | 独立した低レベルのアセンブラ、オブジェクト、リンカー、IR コンポーネントの開発 |
Wave std |
ランタイムとシステム API の Wave ソースモジュールの提供 |
コンポーネント
Whale ワークスペースは、主に 4 つのライブラリ領域で構成されています。
assembler: トークン化、AMD64 の解析とエンコード、セクション、シンボル、リロケーションobject: オブジェクトファイルモデルと ELF64 ライターlinker: リンク計画と実行ファイル構築のコンポーネントir: Whale IR の型、ビルダー、表示、検証、任意のフロントエンドソケット
whale 実行ファイルは、これらの領域を asm、object、link、ir コマンドとして公開します。
ツールの境界
wavec と Whale は独立したコマンドラインツールです。Whale をインストールまたは実行しても、wavec のビルドは変更されません。
Vex はパッケージのビルド計画を wavec へ渡しますが、Whale のオプションは転送しません。それぞれのツールを固有のコマンドラインインターフェースから実行してください。
コマンドの選択
AMD64 ソースを ELF64 再配置可能オブジェクトへアセンブルするには whale asm --amd64 を使います。生のバイト列を ELF64 オブジェクトへ格納するには whale object を使います。IR ソケットコマンドは socket-cli を有効にしたビルドで利用できます。実行ファイルのビルドにはプラットフォームリンカーまたは wavec を使用し、生成したオブジェクトはターゲットプラットフォーム用のオブジェクト形式ツールで検証します。