Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

1、架构图 | architecture diagram

...

源文件

2、move编译器构建原理图

源文件

二、详细设计

1、move编译器接口

1.1 支持的命令

Code Block
$mc support-cmds [OPTIONS]

...

选项

描述

--json

输出JSON格式

标准输出:

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

错误输出:

Code Block

...

1.2 编译命令

Code Block
$mc compile [OPTIONS] 

命令选项:

选项

描述

--json

输出JSON格式

--path

工程路径

标准输出:

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

错误输出:

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

1.3 测试命令

Code Block
$mc test [OPTIONS] 

命令选项:

选项

描述

--json

输出JSON格式

--path

工程路径

--filter

需要测试的函数

标准输出:

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

错误输出:

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

1.4 打包命令

Code Block
$mc package [OPTIONS] 

命令选项:

选项

描述

--json

输出JSON格式

--path

工程路径

标准输出:

Code Block
{
   "code": 0,
   "statusmessage": "success",
   "data": {
       "target_path": "",
   }
}

错误输出:

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

1.5 反编译命令

Code Block
$mc disassemble [OPTIONS] 

命令选项:

选项

描述

--json

输出JSON格式

--move-bytecode-path

Move字节码文件路径

标准输出:

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

错误输出:

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

2、move-api

2.1 package.d.ts

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

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

export interface ITarget {
    blobPath?: string;
    hash?: string; // target blob 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

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

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