Export 使用Clang/LLC/WASM-LD将C编译成WASM时,如何直接导出整数常量?

Export 使用Clang/LLC/WASM-LD将C编译成WASM时,如何直接导出整数常量?,export,clang,webassembly,Export,Clang,Webassembly,给定以下C,输入Clang,LLC,然后输入WASM-LD以生成WASM二进制文件: \uuuuuuuuuuuuuuuuuuuuu属性((可见性(“默认”))常量int和导出名称=1234; 产生相当于以下WAT的WASM: (module (memory $memory (export "memory") 2) (global $an_export_name (export "an_export_name") i32 (i32.const 10

给定以下C,输入Clang,LLC,然后输入WASM-LD以生成WASM二进制文件:

\uuuuuuuuuuuuuuuuuuuuu属性((可见性(“默认”))常量int和导出名称=1234;
产生相当于以下WAT的WASM:

(module
  (memory $memory (export "memory") 2)
  (global $an_export_name (export "an_export_name") i32 (i32.const 1024))
  (data (i32.const 1024) "\d2\04"))
这似乎已导出:

  • 包含值1234的二进制数据块
  • 一个i32常量,它是二进制blob中该值(1024)的偏移量
是否可以只导出值?例如:

(module
  (memory $memory (export "memory") 2)
  (global $an_export_name (export "an_export_name") i32 (i32.const 1234)))

目前,您只能从C/C++导出函数和数据地址

有计划向clang/llvm公开wasm全局函数、表和其他构造,但其中没有一个已经准备好用于生产

因此,现在您需要导出常量的地址以及它所在的内存,然后嵌入式程序需要从内存中读取常量