正在尝试让asm.js返回一个类型化数组



我正在使用emscripten生成一些Javascript,我试图弄清楚如何获得返回类型化数组的函数。我试图返回的数组是静态长度的,但我有点困惑在JS中如何处理基于指针的返回类型。

这种包装是做事的方式吗:如何从javascript访问Emscripten类型的数组?

非常感谢。

emscripten的工作原理是为堆提供一个大的ArrayBuffer(假设启用了类型化数组,默认情况下是这样)。

emscripten编译的模块包含单个ArrayBuffer(module.HEAP)和堆的许多类型ArrayBufferViews(module.HEAPU8、module.HEAPU32等)的属性。

如果您收到了一个指向连续数组开头的指针,您可以通过以下操作获取它所代表的数据的新视图(注意,我使用HEAP8,假设这可能是一个字符数组):

 var array = Module.HEAP8.subarray(ptr, ptr+number_of_elements);

同样值得注意的是,每个类型化视图都接受基于元素的参数,emscripten返回的指针将表示堆中的字节偏移量。例如,一个由13个整数组成的数组可能是:

 var array = Module.HEAP32.subarray((ptr>>2), (ptr>>2)+13);

最新更新