Учитывая следующий C, переданный в Clang, LLC, а затем WASM-LD для создания двоичного файла WASM:
__attribute__((visibility("default"))) const int an_export_name = 1234;
Генерируется WASM, эквивалентный следующему WAT:
(module
(memory $memory (export "memory") 2)
(global $an_export_name (export "an_export_name") i32 (i32.const 1024))
(data (i32.const 1024) "\d2\04"))
Это, кажется, экспортировано:
Можно ли вместо этого просто экспортировать значение? Например:
(module
(memory $memory (export "memory") 2)
(global $an_export_name (export "an_export_name") i32 (i32.const 1234)))
В настоящее время из C/C++ можно экспортировать только функции и адреса данных.
Есть планы предоставить такие вещи, как глобальные объекты wasm, таблицы и другие конструкции для clang/llvm, но ни один из них пока не готов к использованию в производственной среде.
Итак, на данный момент вам нужно экспортировать адрес вашей константы вместе с памятью, в которой она живет, а затем встроенному устройству нужно прочитать константу из памяти.