Visitar URL original
Перевод из текстового формата WebAssembly в Wasm - WebAssembly | MDN

This page was translated from English by the community. Learn more and join the MDN Web Docs community.

View in English Always switch to English

Перевод из текстового формата WebAssembly в Wasm

WebAssembly имеет текстовое представление на основе S-выражений, которое представляет собой промежуточную форму, предназначенную для отображения в текстовых редакторах, средствах разработки браузеров и т. д. В этой статье кратко объясняется, как это работает и как использовать доступные инструменты для преобразования файлов из текстового формата в двоичный формат .wasm сборки.

Примечание: Файлы текстового формата обычно сохраняются с расширением .wat. Исторически так же использовалось расширение .wast, однако, теперь оно применяется для языка сценариев, используемого тестами WebAssembly.

Пример текстового формата

Давайте рассмотрим простой пример: следующая программа импортирует функцию с именем imported_func из модуля с именем imports и экспортирует функцию с именем exported_func:

wasm
(module
  (func $i (import "imports" "imported_func") (param i32))
  (func (export "exported_func")
    i32.const 42
    call $i
  )
)

Функция exported_func экспортируется для использования в нашей среде (например, web-приложении, в котором мы используем наш модуль WebAssembly). Когда он вызывается, он вызывает импортированную функцию JavaScript с именем imported_func, которая запускается со значением (42), передаваемым в качестве параметра.

Преобразование текстового формата .wat в двоичный .wasm файл

Давайте попробуем преобразовать приведенный выше пример текстового представления .wat в двоичный формат .wasm.

  1. Для начала сделайте копию приведенного выше примера в текстовом файле. Назовите его simple.wat.

  2. Нам нужно преобразовать это текстовое представление в двоичный формат, который фактически читает браузер, прежде чем мы сможем его использовать. Для этого мы можем использовать инструментарий wabt, который включает в себя компиляторы для преобразования между текстовым представлением WebAssembly и wasm и наоборот, а также многие другие утилиты. Перейдите по адресу https://github.com/webassembly/wabt — следуйте инструкциям на этой странице, чтобы настроить инструментарий.

  3. Если вы собираете утилиты wabt из исходного кода, добавьте каталог /wabt/out/clang/Debug в переменную PATH.

  4. Затем запустите программу wat2wasm, передав ей путь к исходному файлу, за которым следует параметр -o, а затем путь к выходному файлу:

    bash
    wat2wasm simple.wat -o simple.wasm
    

Это преобразует исходный текстовый код в файл с именем simple.wasm, который содержит собранный двоичный код .wasm.

Примечание: Также можно преобразовать сборку обратно в текстовое представление при помощи утилиты wasm2wat, например, wasm2wat simple.wasm -o text.wat.

Просмотр файлов сборки

Поскольку выходной файл является двоичным форматом сборки, его нельзя просмотреть в обычном текстовом редакторе. Однако, вы можете просмотреть его, используя параметр -v утилиты wat2wasm. Попробуйте выполнить следующую команду:

bash
wat2wasm simple.wat -v

Она выдаст информацию в терминале следующим образом:

несколько строк двоичного кода с текстовым описанием рядом с ними. Например: 0000008: 01 ; section code

Смотрите также