Emscripten使用入门 从0开始快速上手WebAssembly (emscripten)

Emscripten使用入门 从0开始快速上手WebAssembly (emscripten)

对于 _json_parse 这个函数调用而言,由于我们传入的是字符串,因此实际上是程序运行内存上的某个地址,其很自然地进行了操作。接着它先对栈顶进行了保存,然后将 $jsonstr$addr (实际上就是)传递给了 _cJSON_Parse 函数,最后进行一系列相关调用后恢复栈地址,结束运行。在这里需要我们注意的是,实际上 $jsonstr$addr 的相关连续内存的内容上就是我们通过 Module.HEAPU8.set 设置的对应数据,如果需要传递类似如上的指针数据的话,其实质上是传递了程序运行内存的对应地址信息。因此我们如果直接传入 JavaScript 的原生字符串、对象、数组等对象参数,ASM.js 并不能将其从自己程序的运行内存中获取(内存地址信息并不一致)。对于 WebAssembly 而言其调用本质与 ASM.js 一致,若有兴趣可以编译后自行探索。

声明:本文来自用户分享和网络收集,仅供学习与参考,测试请备份。