LLVM将目标设置为WebAssembly

时间:2018-07-24 12:50:43

标签: llvm llvm-ir webassembly

我已经使用C ++编写了一个前端代码,以利用LLVM内核来获取PHP文件并生成经典体系结构的IR。我可以使用LLVM的嵌入式JIT编译器运行此代码。 我将向WebAssembly生成IR。我将LLVM 6.0和WebAssembly用作构建的目标

$ llvm-config --targets-built
AArch64 AMDGPU ARM BPF Hexagon Lanai Mips MSP430 NVPTX PowerPC Sparc SystemZ X86 XCore WebAssembly AVR

我已在代码中设置此更新

...
LLVMSetTarget((LLVMOpaqueModule *)context->module, "wasm32");
...

现在,我注意到经过修改的IR代码无论是否进行了代码编辑都是一样的,并且我已经按照此管道生成了wasm文件

$ llc -asm-verbose=false -march=wasm32 -o my.s my.bc
$ binaryen/bin/s2wasm my.s > my.wast
$ wabt/bin/wat2wasm my.wast -o my.wasm

但是当我跑步

$ node ./runwasm.js my.wasm main

我收到以下错误

RuntimeError: memory access out of bounds

我不明白问题出在哪里,因为如果遵循此tutorial,我不会得到任何错误。

建议?

0 个答案:

没有答案