AssemblyScript:动态本地数组大小



试图创建一个大小为从JS导入的变量的数组似乎不起作用。例如:

AssemblyScript:

export declare arrSize: u32
const arr = new Uint32Array(arrSize)
export function init (): void {
unchecked(testArr[0]) = 1
store<u32>(0, unchecked(testArr[0]))
}

JS:

const memory = new WebAssembly.Memory({ initial: 1 })
WebAssembly.instantiateStreaming(fetch('module.wasm'), {
env: { memory },
index: { arrSize: 2 }
}).then(module => {
const { init } = module.instance.exports
init()
const arr = new Uint32Array(memory.buffer, 0, 2)
console.log(arr)
})

然而,如果我在AssemblyScript文件中更改const arr = new Uint32Array(2),它会起作用。

有没有办法在WebAssembly模块中设置动态大小的本地数组?

这是有效的:

export declare const count: i32;
const arr = new Array<i32>(count);
export function getCount(): i32 {
return arr.length;
}

WebAssembly.instantiate的导入对象中,您应该有:

{
index: {
count: 22
}
}

假设您的assemblyscript文件名为index.ts

相关内容

  • 没有找到相关文章

最新更新