1 2 3 4 5 6 | export function f(x: i32): i32 { if (x === 1 || x === 2) { return 1; } return f(x - 1) + f(x - 2) } |
asc f.ts -o f.wasm |
1 2 3 4 5 6 | fetch('f.wasm') // 网络加载 f.wasm 文件 .then(res => res.arrayBuffer()) // 转成 ArrayBuffer .then(WebAssembly.instantiate) // 编译为当前 CPU 架构的机器码 + 实例化 .then(mod => { // 调用模块实例上的 f 函数计算 console.log(mod.instance.f(50)); }); |
1 2 3 4 5 6 7 8 9 | { "devDependencies": { "assemblyscript": "github:AssemblyScript/assemblyscript", "assemblyscript-typescript-loader": "^1.3.2", "typescript": "^2.8.1", "webpack": "^3.10.0", "webpack-dev-server": "^2.10.1" } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 | module.exports = { module: { rules: [ { test: /\.ts$/, loader: 'assemblyscript-typescript-loader', options: { sourceMap: true, } } ] }, }; |
1 2 3 4 5 6 | { "extends": "../../node_modules/assemblyscript/std/portable.json", "include": [ "./**/*.ts" ] } |
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |