...
1、架构图 | architecture diagram
...
2、move编译器构建原理图
二、详细设计
1、move编译器接口
1.1 支持的命令
Code Block |
---|
$mc support-cmds [OPTIONS] |
...
选项 | 描述 |
---|---|
| 输出JSON格式 |
标准输出:
Code Block |
---|
{ "code": 0, "message": "success", "data": [ "compile", "test", "package", "disassemble" ] } |
错误输出:
Code Block |
---|
...
1.2 编译命令
Code Block |
---|
$mc compile [OPTIONS] |
命令选项:
选项 | 描述 |
---|---|
| 输出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格式 |
--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格式 |
--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格式 |
--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>; |