Произвольные байты в разделе данных WebAssembly

Каждый пример, который я видел в WebAssembly для раздела данных, использует строку, т.е.

(data (i32.const 16) "Hello World")

Как я могу использовать эти разделы с двоичными данными? Как я мог сделать что-то эквивалентное...

(data (i32.const 16) 0x00 0x01 0x02 0x03)

Должен ли я использовать i32.store?

2 ответа

Я решил проблему, избежав байтов с обратной косой чертой внутри строки. Я не знаю, есть ли лучший способ сделать это.

(data (i32.const 16) "\00\01\02\03")

В спецификации WebAssembly есть раздел, в котором подробно описан формат текста WAT.

Раздел данных определяет данные для заданного индекса памяти и смещения строкой. Формат этой строки указан в другом месте спецификации. Это кодировка UTF8 с небольшим количеством escape-последовательностей. ∖hh которые кодируют такие вещи, как вкладки, переводы строки и \u который кодирует байты в шестнадцатеричном виде.

Это может выглядеть не очень компактно, однако при компиляции в wasm оно сохраняется как последовательность байтов.

Другие вопросы по тегам