zoukankan      html  css  js  c++  java
  • WebAssembly学习(五):AssemblyScript

    一、项目创建

    1.创建AssemblyScript根目录

    1 mkdir AssemblyScript

     2.安装AssemblyScript开发依赖

    1 cnpm install --save-dev AssemblyScript/assemblyscript

     3.在根目录下创建ts文件目录

    1 mkdir assembly

    4.在assembly目录下创建ts配置文件tsconfig.json,内容如下

    1 {
    2   "extends": "../node_modules/assemblyscript/std/assembly.json",
    3   "include": [
    4     "./**/*.ts"
    5   ]
    6 }

    5.在assembly目录下创建module.ts文件,内容如下

    1 export function add(a: i32, b: i32): i32 {
    2   return a + b;
    3 }

    二、编译

    1.在AssemblyScript根目录下package.json中添加以下编译脚本命令

    1 "scripts": {
    2     "build": "npm run build:untouched && npm run build:optimized",
    3     "build:untouched": "asc assembly/module.ts -t module.untouched.wat -b module.untouched.wasm --validate --sourceMap --measure",
    4     "build:optimized": "asc assembly/module.ts -t module.optimized.wat -b module.optimized.wasm --validate --sourceMap --measure --optimize"
    5    }

    2.运行编译脚本,将assembly/module.ts编译为module.untouched.wasm二进制文件

    1 npm run build

    注意:如果构建失败,则可能需要(此时)npm install --save-dev ts-node

    三、使用

    1.在AssemblyScript根目录下创建module.js文件,内容如下,用来加载并实例化.wasm模块

    1 const fs = require("fs");
    2 module.exports = new WebAssembly.Instance(new WebAssembly.Module(fs.readFileSync(__dirname + "/module.optimized.wasm"), {})).exports;

    2.在AssemblyScript根目录下创建hello.js文件,内容如下,用来使用module.js导出的模块

    1 var myModule = require("./module.js");
    2 console.log(myModule.add(1, 2));

    3.运行结果如下

    1 E:CodeAssemblyScript>cmd.exe
    2 Microsoft Windows [版本 10.0.17134.590]
    3 (c) 2018 Microsoft Corporation。保留所有权利。
    4 
    5 E:CodeAssemblyScript>node hello.js
    6 3
    7 
    8 E:CodeAssemblyScript>

    4.最终目录结构如下

    TS为JS类型的超集,AS为TS的子集,其中一些支持的数据类型和限制还有待学习,所以最终只是实现一个简单的加法运算。

  • 相关阅读:
    UVa 1394 约瑟夫问题的变形
    UVa 572 油田(DFS求连通块)
    UVa 699 下落的树叶
    Prim求解最小生成树
    UVa 839 天平
    UVa 11988 破损的键盘(链表)
    UVa 442 矩阵链乘(栈)
    UVa 二叉树的编号(二叉树)
    UVa 12100打印队列(队列)
    约瑟夫圆桌问题
  • 原文地址:https://www.cnblogs.com/jixiaohua/p/10441015.html
Copyright © 2011-2022 走看看