Справочник по командам Whale

Описывает Whale assembler, object wrapper, диагностические выходные данные и дополнительные команды IR.

Wave Foundation

Whale Сборка

В репозитории Whale запустите:

cargo build --release

Исполняемый файл верхнего уровня имеет четыре семейства команд:

whale asm [--amd64 | --aarch64] <input> -o <output>
whale object <input> -o <output>
whale ir <subcommand> [options]

AMD64 assembler

whale asm --amd64 input.asm -o output.o

AMD64 assembler получает путь .o в качестве выходных данных, а ELF64 relocatable содержит section, symbol и relocation Создать object.

Включите подробную диагностику с помощью --debug-whale.

whale asm --amd64 input.asm -o output.o \
  --debug-whale --token --ast --bytes --dump-hex --stats

Диагностические флаги включают --token, --ast, --bytes, --dump-hex, --dump-bin, --dump-json и --stats. --trace печатает ход обработки.

Object wrapper

whale object input.bin -o output.o

Команда object помещает необработанные байты в секцию .text ELF64 и добавляет глобальный символ start со смещением 0. Она оборачивает необработанный машинный код в объектный файл ELF.

Дополнительно IR socket

Команда ir включается только в том случае, если Whale собран с функцией socket-cli.

cargo run -p whale --features socket-cli -- ir lower program.json
cargo run -p whale --features socket-cli -- ir lower program.json -o program.wir

ir lower считывает JSON из Whale socket schema, преобразует его в Whale IR и проверяет модуль. Текст IR выводится по пути stdout или -o. --target <triple> заменяет целевую строку, а --no-verify пропускает проверку.

Чтобы использовать команду IR, Whale должен быть создан с функцией socket-cli. Производители Socket JSON и Whale должны использовать одни и те же socket schema version.