我已经使用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,我不会得到任何错误。
建议?