Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Current »

一、概要设计

1、架构图 | architecture diagram

源文件

2、move编译器构建原理图

源文件

二、详细设计

1、move编译器接口

1.1 支持的命令

$mc support-cmds [OPTIONS]

命令选项:

选项

描述

--json

输出JSON格式

标准输出:

{
   "code": 0,
   "message": "success",
   "data": [
       "compile",
       "test",
       "package",
       "disassemble"
   ]
}

错误输出:

 

1.2 编译命令

$mc compile [OPTIONS] 

命令选项:

选项

描述

--json

输出JSON格式

--path

工程路径

标准输出:

{
   "code": 0,
   "message": "success"
}

错误输出:

{
   "code": 1,
   "message": "compile fail",
   "data": {
       "diagnostics": []
   }
}

1.3 测试命令

$mc test [OPTIONS] 

命令选项:

选项

描述

--json

输出JSON格式

--path

工程路径

--filter

需要测试的函数

标准输出:

{
   "code": 0,
   "message": "success",
   "data": {
       "test_cases": [],
   }
}

错误输出:

{
   "code": 1,
   "message": "compile fail",
   "data": {
       "diagnostics": []
   }
}

1.4 打包命令

$mc package [OPTIONS] 

命令选项:

选项

描述

--json

输出JSON格式

--path

工程路径

标准输出:

{
   "code": 0,
   "message": "success",
   "data": {
       "target_path": "",
   }
}

错误输出:

{
   "code": 1,
   "message": "compile fail",
   "data": {
       "diagnostics": []
   }
}

1.5 反编译命令

$mc disassemble [OPTIONS] 

命令选项:

选项

描述

--json

输出JSON格式

--move-bytecode-path

Move字节码文件路径

标准输出:

{
   "code": 0,
   "message": "success",
   "data": {
       "code": "反编译后的代码",
   }
}

错误输出:

{
   "code": 1,
   "message": "disassemble fail",
   "data": {
       "diagnostics": []
   }
}

2、move-api

2.1 package.d.ts

import { WasmFs } from '@wasmer/wasmfs';

export interface IDependency {
    git?: string;
    rev?: string;
    local?: string;
}

export interface ITarget {
    path?: string;
    hash?: string; // 目标文件Hash
}

export interface IMovePackage {
    name?: string;
    version?: string;
    addresses?: Map<string, string>;
    dependencies?: Map<string, IDependency>;
    devDependencies?: Map<string, IDependency>;
    build(): Promise<void>;
    test(): Promise<void>;
    package(): Promise<ITarget>;
}

export declare type MoveOptions = {
    packagePath: string;
    test: boolean;
    alias?: Map<string, string>;
    initFunction?: string;
};

export declare function createMovePackage(wasmfs: WasmFs, opts: MoveOptions): IMovePackage;

2.2 disassemble.d.ts

import { WasmFs } from '@wasmer/wasmfs';

export declare function disassemble(wasmfs: WasmFs, mvPath: string): Promise<string>;

  • No labels