工具链组件
描述单独的低级工具链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 由四个主要库区组成:
assembler:标记化、AMD64 解析/编码、section、symbol 和 relocationobject:目标文件模型和 ELF64 writerlinker:链路层ir:Whale IR 类型、builder、输出、验证和可选 frontend socket
whale 可执行文件为该区域提供命令 asm、object、link 和 ir。
工具边框
Wave 程序构建为 wavec。直接处理程序集、对象文件和IR时,请使用whale命令。
安装Whale不会改变wavec的构建方法。 Vex使用wavec构建Wave包,Whale直接在处理低级工件的任务中运行它。
可交付成果验证
将 Whale 工件链接到构建过程时,请确保 object format 和目标 architecture 匹配。 symbol和relocation可以使用readelf和objdump等独立工具进行检查。使用 IR socket 的构建必须使用与 Whale 来自同一生产商的 socket schema。