Произвольные байты в разделе данных 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 оно сохраняется как последовательность байтов.