AssemblyScript:动态本地数组大小
Posted
技术标签:
【中文标题】AssemblyScript:动态本地数组大小【英文标题】:AssemblyScript: Dynamic local array size 【发布时间】:2021-04-16 10:41:28 【问题描述】:尝试创建一个大小为从 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 模块中设置动态大小的本地数组?
【问题讨论】:
【参考方案1】:这行得通:
export declare const count: i32;
const arr = new Array<i32>(count);
export function getCount(): i32
return arr.length;
在 WebAssembly.instantiate
的导入对象中,您应该有:
index:
count: 22
前提是你的汇编脚本文件名为index.ts
【讨论】:
以上是关于AssemblyScript:动态本地数组大小的主要内容,如果未能解决你的问题,请参考以下文章
在 AssemblyScript 中实例化数组的三种不同方法
使用 AssemblyScript 通过引用操作画布数据(类型化数组)
分配 65536 个元素的数组后,AssemblyScript / WebAssembly 分配失败
如何在 AssemblyScript / Near 中打印数组的长度?