0.3.2 |
|
---|---|
0.3.1 |
|
0.2.1 |
|
0.1.6 |
|
0.1.4 |
|
在#bytecode中排名第110
每月下载量70次
用于166 个crate(44 直接使用)
580KB
13K SLoC
id: vm title: 虚拟机 custom_edit_url: https://github.com/move-language/move/edit/main/language/move-binary-format/README.md
MoveVM 执行用 Move 字节码表示的交易。有两个主要的crate:核心VM和VM运行时。VM核心包含VM的低级数据类型 - 主要包括文件格式及其抽象。还定义了气表量度逻辑抽象。
概述
MoveVM 是一个具有静态类型系统的栈式机器。MoveVM 通过文件格式、验证(参考 字节码验证器 README)和运行时约束来遵守 Move 语言的规范。文件格式的结构允许定义模块、类型(资源和无限制类型)和函数。代码通过字节码指令表示,这些指令可能引用外部函数和类型。文件格式还强加了一些语言的不变量,如不透明类型和私有字段。从文件格式的定义中可以看出,模块为函数和类型定义了一个范围/命名空间。所有字段都是私有的,因此类型是不透明的,类型不携带任何函数或方法。
实现细节
MoveVM 核心crate提供了文件格式的定义以及与文件格式相关的所有实用工具。
- 对文件格式和字节码的简单Rust抽象(
diem/language/move-binary-format/src/file_format.rs
)。这些Rust结构在代码库中被广泛使用。 - 文件格式的序列化和反序列化。这些定义了代码的链上二进制表示。
- 一些格式化打印功能。
- 文件格式的proptest基础设施。
在 diem/language/move-binary-format/src/file_format.rs
中的 CompiledModule
和 CompiledScript
定义分别是 Move 模块和交易脚本的顶级结构体。这些结构体提供了对文件格式的简单抽象。此外,还定义了一系列 视图,以便于导航和检查 CompiledModule
和 CompiledScript
。
文件夹结构
.
├── src # VM core files
├── tests # Proptests
└── vm-runtime # Interpreter and runtime data types (see README in that folder)
依赖项
~1–2MB
~40K SLoC